Gentoo Archives: gentoo-commits

From: Nirbheek Chauhan <nirbheek@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gnome:master commit in: gnome-base/gdm/, gnome-base/gdm/files/
Date: Sat, 02 Apr 2011 13:54:16
Message-Id: 05332aeddbd7e526110730595ed0cdb3cbf54036.nirbheek@gentoo
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