1 |
commit: 05332aeddbd7e526110730595ed0cdb3cbf54036 |
2 |
Author: Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Apr 2 13:43:14 2011 +0000 |
4 |
Commit: Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Apr 2 13:43:14 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=05332aed |
7 |
|
8 |
gnome-base/gdm: fix crasher with gtk+-3.0.7 |
9 |
|
10 |
--- |
11 |
.../gdm/files/gdm-2.91.94-fix-gtk+-crasher.patch | 104 ++++++++++++++++++++ |
12 |
.../{gdm-2.91.94.ebuild => gdm-2.91.94-r1.ebuild} | 3 + |
13 |
2 files changed, 107 insertions(+), 0 deletions(-) |
14 |
|
15 |
diff --git a/gnome-base/gdm/files/gdm-2.91.94-fix-gtk+-crasher.patch b/gnome-base/gdm/files/gdm-2.91.94-fix-gtk+-crasher.patch |
16 |
new file mode 100644 |
17 |
index 0000000..3b8379e |
18 |
--- /dev/null |
19 |
+++ b/gnome-base/gdm/files/gdm-2.91.94-fix-gtk+-crasher.patch |
20 |
@@ -0,0 +1,104 @@ |
21 |
+From 045c319f2655fc45c24951479eb9cd1e59792cef Mon Sep 17 00:00:00 2001 |
22 |
+From: Benjamin Otte <otte@××××××.com> |
23 |
+Date: Sat, 2 Apr 2011 04:10:09 +0200 |
24 |
+Subject: [PATCH] simple-greeter: Don't request an invalid size |
25 |
+ |
26 |
+GTK widgets must at all times report a size they can handle. So it is |
27 |
+not allowed to return 0 when not realized, because then size allocations |
28 |
+break when GTK uses this size for its widget. |
29 |
+In this case, GTK uses the pre-realize size to determine the size it |
30 |
+should request when creating the greeter window - chicken and egg so to |
31 |
+say. |
32 |
+ |
33 |
+This patch just uses the default monitor (I guess the root window's |
34 |
+monitor is the default monitor?) for determining the login window size. |
35 |
+ |
36 |
+One thing this patch doesn't do is add a call to gtk_widget_queue_resize() |
37 |
+from the realize callback or from monitor-changing signals, though |
38 |
+that's probably technically necessary. |
39 |
+ |
40 |
+https://bugzilla.gnome.org/show_bug.cgi?id=646498 |
41 |
+--- |
42 |
+ gui/simple-greeter/gdm-greeter-login-window.c | 28 +++++++++---------------- |
43 |
+ 1 files changed, 10 insertions(+), 18 deletions(-) |
44 |
+ |
45 |
+diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c |
46 |
+index abd6707..3ec9a09 100644 |
47 |
+--- a/gui/simple-greeter/gdm-greeter-login-window.c |
48 |
++++ b/gui/simple-greeter/gdm-greeter-login-window.c |
49 |
+@@ -1413,25 +1413,22 @@ gdm_greeter_login_window_get_preferred_width (GtkWidget *widget, |
50 |
+ { |
51 |
+ int monitor; |
52 |
+ GdkScreen *screen; |
53 |
++ GdkWindow *window; |
54 |
+ GdkRectangle area; |
55 |
+ GtkAllocation widget_allocation; |
56 |
+ int min_size; |
57 |
+ int nat_size; |
58 |
+ |
59 |
+- min_size = 0; |
60 |
+- nat_size = 0; |
61 |
+- |
62 |
+- if (!gtk_widget_get_realized (widget)) { |
63 |
+- goto out; |
64 |
+- } |
65 |
+- |
66 |
+ gtk_widget_get_preferred_width (gtk_bin_get_child (GTK_BIN (widget)), |
67 |
+ &min_size, |
68 |
+ &nat_size); |
69 |
+ |
70 |
+ /* Make width be at least 33% screen width */ |
71 |
+ screen = gtk_widget_get_screen (widget); |
72 |
+- monitor = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (widget)); |
73 |
++ window = gtk_widget_get_window (widget); |
74 |
++ if (window == NULL) |
75 |
++ window = gdk_screen_get_root_window (screen); |
76 |
++ monitor = gdk_screen_get_monitor_at_window (screen, window); |
77 |
+ gdk_screen_get_monitor_geometry (screen, monitor, &area); |
78 |
+ min_size = MAX (min_size, .33 * area.width); |
79 |
+ nat_size = MAX (nat_size, .33 * area.width); |
80 |
+@@ -1442,7 +1439,6 @@ gdm_greeter_login_window_get_preferred_width (GtkWidget *widget, |
81 |
+ min_size = MAX (min_size, widget_allocation.width); |
82 |
+ nat_size = MAX (nat_size, widget_allocation.width); |
83 |
+ |
84 |
+- out: |
85 |
+ if (minimum_size) |
86 |
+ *minimum_size = min_size; |
87 |
+ if (natural_size) |
88 |
+@@ -1456,29 +1452,25 @@ gdm_greeter_login_window_get_preferred_height (GtkWidget *widget, |
89 |
+ { |
90 |
+ int monitor; |
91 |
+ GdkScreen *screen; |
92 |
++ GdkWindow *window; |
93 |
+ GdkRectangle area; |
94 |
+ int min_size; |
95 |
+ int nat_size; |
96 |
+ |
97 |
+- min_size = 0; |
98 |
+- nat_size = 0; |
99 |
+- |
100 |
+- if (!gtk_widget_get_realized (widget)) { |
101 |
+- goto out; |
102 |
+- } |
103 |
+- |
104 |
+ gtk_widget_get_preferred_height (gtk_bin_get_child (GTK_BIN (widget)), |
105 |
+ &min_size, |
106 |
+ &nat_size); |
107 |
+ |
108 |
+ /* Make height be at most 80% of screen height */ |
109 |
+ screen = gtk_widget_get_screen (widget); |
110 |
+- monitor = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (widget)); |
111 |
++ window = gtk_widget_get_window (widget); |
112 |
++ if (window == NULL) |
113 |
++ window = gdk_screen_get_root_window (screen); |
114 |
++ monitor = gdk_screen_get_monitor_at_window (screen, window); |
115 |
+ gdk_screen_get_monitor_geometry (screen, monitor, &area); |
116 |
+ min_size = MIN (min_size, .8 * area.height); |
117 |
+ nat_size = MIN (nat_size, .8 * area.height); |
118 |
+ |
119 |
+- out: |
120 |
+ if (minimum_size) |
121 |
+ *minimum_size = min_size; |
122 |
+ if (natural_size) |
123 |
+-- |
124 |
+1.7.4 |
125 |
\ No newline at end of file |
126 |
|
127 |
diff --git a/gnome-base/gdm/gdm-2.91.94.ebuild b/gnome-base/gdm/gdm-2.91.94-r1.ebuild |
128 |
similarity index 98% |
129 |
rename from gnome-base/gdm/gdm-2.91.94.ebuild |
130 |
rename to gnome-base/gdm/gdm-2.91.94-r1.ebuild |
131 |
index 1a5e95e..971c67a 100644 |
132 |
--- a/gnome-base/gdm/gdm-2.91.94.ebuild |
133 |
+++ b/gnome-base/gdm/gdm-2.91.94-r1.ebuild |
134 |
@@ -118,6 +118,9 @@ src_prepare() { |
135 |
# fix libxklavier automagic support |
136 |
epatch "${FILESDIR}/${PN}-2.32.0-automagic-libxklavier-support.patch" |
137 |
|
138 |
+ # Fix crasher with gtk+-3.0.7, bug 361679 |
139 |
+ epatch "${FILESDIR}/${P}-fix-gtk+-crasher.patch" |
140 |
+ |
141 |
mkdir "${S}"/m4 |
142 |
intltoolize --force --copy --automake || die "intltoolize failed" |
143 |
eautoreconf |