From f2d45b7696d813a0b779b3b2b5df41054384667b8efc66ca0275bc648bd4e8fd Mon Sep 17 00:00:00 2001 From: Vincent Untz Date: Mon, 5 Oct 2009 21:33:07 +0000 Subject: [PATCH 1/3] Accepting request 21875 from home:vuntz:branches:GNOME:Factory Copy from home:vuntz:branches:GNOME:Factory/gtk2 via accept of submit request 21875 revision 2. Request was accepted with message: Forwarding to openSUSE:Factory OBS-URL: https://build.opensuse.org/request/show/21875 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gtk2?expand=0&rev=77 --- gtk2-git-c5d08611.patch | 167 ++++++++++++++++++++++++++++++++++++++++ gtk2.changes | 14 ++++ gtk2.spec | 3 + 3 files changed, 184 insertions(+) create mode 100644 gtk2-git-c5d08611.patch diff --git a/gtk2-git-c5d08611.patch b/gtk2-git-c5d08611.patch new file mode 100644 index 0000000..f1a0fb4 --- /dev/null +++ b/gtk2-git-c5d08611.patch @@ -0,0 +1,167 @@ +diff --git a/README b/README +index bc2f857..84d6329 100644 +--- a/README ++++ b/README +@@ -44,6 +44,11 @@ Release notes for 2.18 + GDK_NATIVE_WINDOWS makes GDK create a native X11 window for each + GDK window, which might make problematic applications work better. + ++* GTK+ calls signal (SIGPIPE, SIG_IGN) during initialization, to ignore ++ SIGPIPE signals, since these are almost never wanted in graphical ++ applications. If you do need to handle SIGPIPE for some reason, reset ++ the handler after gtk_init(), but notice that other libraries (e.g. ++ libdbus or gvfs) might do similar things. + + Release notes for 2.16 + ====================== +diff --git a/gdk/directfb/gdkwindow-directfb.c b/gdk/directfb/gdkwindow-directfb.c +index c0ff8e1..30ec834 100644 +--- a/gdk/directfb/gdkwindow-directfb.c ++++ b/gdk/directfb/gdkwindow-directfb.c +@@ -2077,7 +2077,8 @@ GdkWindow * + _gdk_windowing_window_at_pointer (GdkDisplay *display, + gint *win_x, + gint *win_y, +- GdkModifierType *mask) ++ GdkModifierType *mask, ++ gboolean get_toplevel) + { + GdkWindow *retval; + gint wx, wy; +@@ -2137,7 +2138,8 @@ _gdk_windowing_get_pointer (GdkDisplay *display, + gdk_directfb_window_get_pointer (_gdk_windowing_window_at_pointer (display, + NULL, + NULL, +- NULL), ++ NULL, ++ FALSE), + x, y, mask); + } + +diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c +index 7f3572f..2bb5551 100644 +--- a/gdk/gdkwindow.c ++++ b/gdk/gdkwindow.c +@@ -2624,6 +2624,8 @@ gdk_window_end_implicit_paint (GdkWindow *window) + /* Reset clip region of the cached GdkGC */ + gdk_gc_set_clip_region (tmp_gc, NULL); + } ++ else ++ gdk_region_destroy (paint->region); + + g_object_unref (paint->pixmap); + g_free (paint); +diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c +index f98290b..a8dd83b 100644 +--- a/gdk/x11/gdkwindow-x11.c ++++ b/gdk/x11/gdkwindow-x11.c +@@ -1726,7 +1726,7 @@ gdk_window_x11_restack_toplevel (GdkWindow *window, + changes.stack_mode = above ? Above : Below; + XReconfigureWMWindow (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), +- GDK_WINDOW_SCREEN (window), ++ gdk_screen_get_number (GDK_WINDOW_SCREEN (window)), + CWStackMode | CWSibling, &changes); + } + +@@ -3252,12 +3252,15 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, + while (xwindow) + { + xwindow_last = xwindow; +- if (get_toplevel && +- (window = gdk_window_lookup_for_display (display, xwindow)) != NULL && +- GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) +- break; + XQueryPointer (xdisplay, xwindow, + &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); ++ if (get_toplevel && ++ (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && ++ GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) ++ { ++ xwindow = xwindow_last; ++ break; ++ } + } + } + else +@@ -3315,16 +3318,16 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, + while (xwindow) + { + xwindow_last = xwindow; +- if (get_toplevel && +- (window = gdk_window_lookup_for_display (display, xwindow)) != NULL && +- GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) +- break; + gdk_error_trap_push (); + XQueryPointer (xdisplay, xwindow, + &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); + gdk_flush (); + if (gdk_error_trap_pop ()) + break; ++ if (get_toplevel && ++ (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && ++ GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) ++ break; + } + } + +diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c +index e47e1be..2bbc96d 100644 +--- a/gtk/gtkmain.c ++++ b/gtk/gtkmain.c +@@ -686,6 +686,8 @@ do_post_parse_initialization (int *argc, + + gettext_initialization (); + ++ signal (SIGPIPE, SIG_IGN); ++ + if (g_fatal_warnings) + { + GLogLevelFlags fatal_mask; +@@ -985,6 +987,15 @@ gtk_init_check (int *argc, + * the GUI for some reason. If you want your program to fall back to a + * textual interface you want to call gtk_init_check() instead. + * ++ * ++ * ++ * Since 2.18, GTK+ calls signal (SIGPIPE, SIG_IGN) ++ * during initialization, to ignore SIGPIPE signals, since these are ++ * almost never wanted in graphical applications. If you do need to ++ * handle SIGPIPE for some reason, reset the handler after gtk_init(), ++ * but notice that other libraries (e.g. libdbus or gvfs) might do ++ * similar things. ++ * + **/ + void + gtk_init (int *argc, char ***argv) +diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c +index c0815a9..36c5a65 100644 +--- a/gtk/gtkwindow.c ++++ b/gtk/gtkwindow.c +@@ -5648,6 +5648,13 @@ gtk_window_compute_configure_request_size (GtkWindow *window, + if (info->resize_height > 0) + *height = info->resize_height; + } ++ ++ /* Don't ever request zero width or height, its not supported by ++ gdk. The size allocation code will round it to 1 anyway but if ++ we do it then the value returned from this function will is ++ not comparable to the size allocation read from the GtkWindow. */ ++ *width = MAX (*width, 1); ++ *height = MAX (*height, 1); + } + + static GtkWindowPosition +diff --git a/modules/printbackends/lpr/gtkprintbackendlpr.c b/modules/printbackends/lpr/gtkprintbackendlpr.c +index eeaaa99..72d9c33 100644 +--- a/modules/printbackends/lpr/gtkprintbackendlpr.c ++++ b/modules/printbackends/lpr/gtkprintbackendlpr.c +@@ -278,8 +278,6 @@ lpr_write (GIOChannel *source, + { + gsize bytes_written; + +- signal (SIGPIPE, SIG_IGN); +- + g_io_channel_write_chars (ps->in, + buf, + bytes_read, diff --git a/gtk2.changes b/gtk2.changes index 83e0170..c1873cf 100644 --- a/gtk2.changes +++ b/gtk2.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Mon Oct 5 23:15:24 CEST 2009 - vuntz@opensuse.org + +- Add gtk2-git-c5d08611.patch: this groups the various code changes + in GTK+ git since 2.18.1. Those are all important fixes: + + Move SIGPIPE suppression to gtk_init and document it, instead + of having it in the lpr backend + + Call XReconfigureWMWindow with proper screen (code error with + compiler warning) + + Fix DirectFB backend compilation + + Plug a memory leak + + bgo#597386: Cannot click buttons more than once + + bgo#588059: Fix notification icon not always visible + ------------------------------------------------------------------- Sat Oct 3 01:28:50 CEST 2009 - vuntz@opensuse.org diff --git a/gtk2.spec b/gtk2.spec index a81ad78..a2e1dd5 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -60,6 +60,8 @@ Patch23: bugzilla-131498-allow-xim-for-all-languages.patch Patch24: gtk2-bnc130159-bgo319483-async-selection-in-gtk-font-selection.diff # PATCH-FIX-UPSTREAM gtk2-build-fix.patch bgo597026 vuntz@novell.com -- Add missing include Patch25: gtk2-build-fix.patch +# PATCH-FIX-UPSTREAM gtk2-git-c5d08611.patch vuntz@opensuse.org -- Various fixes taken from git (this is nearly the diff between 2.18.1 and what will be 2.18.2) +Patch26: gtk2-git-c5d08611.patch # Patches taken from upstream or slated to go upstream. We can expect these to become obsolete # in future releases. # Please don't delete this comment even if this section is empty -- "# empty" should @@ -164,6 +166,7 @@ cp -a %{S:2} . %patch23 -p1 %patch24 -p1 %patch25 -p1 +%patch26 -p1 %patch53 # gnome-patch-translation-update From 1fdcfc7d6845846e7b08ac9fea933ed41062b496d76dbb00b5a00a24d2f9a277 Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Tue, 6 Oct 2009 02:59:02 +0000 Subject: [PATCH 2/3] checked in OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gtk2?expand=0&rev=78 --- gtk2-git-c5d08611.patch | 167 ---------------------------------------- gtk2.changes | 14 ---- gtk2.spec | 3 - 3 files changed, 184 deletions(-) delete mode 100644 gtk2-git-c5d08611.patch diff --git a/gtk2-git-c5d08611.patch b/gtk2-git-c5d08611.patch deleted file mode 100644 index f1a0fb4..0000000 --- a/gtk2-git-c5d08611.patch +++ /dev/null @@ -1,167 +0,0 @@ -diff --git a/README b/README -index bc2f857..84d6329 100644 ---- a/README -+++ b/README -@@ -44,6 +44,11 @@ Release notes for 2.18 - GDK_NATIVE_WINDOWS makes GDK create a native X11 window for each - GDK window, which might make problematic applications work better. - -+* GTK+ calls signal (SIGPIPE, SIG_IGN) during initialization, to ignore -+ SIGPIPE signals, since these are almost never wanted in graphical -+ applications. If you do need to handle SIGPIPE for some reason, reset -+ the handler after gtk_init(), but notice that other libraries (e.g. -+ libdbus or gvfs) might do similar things. - - Release notes for 2.16 - ====================== -diff --git a/gdk/directfb/gdkwindow-directfb.c b/gdk/directfb/gdkwindow-directfb.c -index c0ff8e1..30ec834 100644 ---- a/gdk/directfb/gdkwindow-directfb.c -+++ b/gdk/directfb/gdkwindow-directfb.c -@@ -2077,7 +2077,8 @@ GdkWindow * - _gdk_windowing_window_at_pointer (GdkDisplay *display, - gint *win_x, - gint *win_y, -- GdkModifierType *mask) -+ GdkModifierType *mask, -+ gboolean get_toplevel) - { - GdkWindow *retval; - gint wx, wy; -@@ -2137,7 +2138,8 @@ _gdk_windowing_get_pointer (GdkDisplay *display, - gdk_directfb_window_get_pointer (_gdk_windowing_window_at_pointer (display, - NULL, - NULL, -- NULL), -+ NULL, -+ FALSE), - x, y, mask); - } - -diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c -index 7f3572f..2bb5551 100644 ---- a/gdk/gdkwindow.c -+++ b/gdk/gdkwindow.c -@@ -2624,6 +2624,8 @@ gdk_window_end_implicit_paint (GdkWindow *window) - /* Reset clip region of the cached GdkGC */ - gdk_gc_set_clip_region (tmp_gc, NULL); - } -+ else -+ gdk_region_destroy (paint->region); - - g_object_unref (paint->pixmap); - g_free (paint); -diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c -index f98290b..a8dd83b 100644 ---- a/gdk/x11/gdkwindow-x11.c -+++ b/gdk/x11/gdkwindow-x11.c -@@ -1726,7 +1726,7 @@ gdk_window_x11_restack_toplevel (GdkWindow *window, - changes.stack_mode = above ? Above : Below; - XReconfigureWMWindow (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), -- GDK_WINDOW_SCREEN (window), -+ gdk_screen_get_number (GDK_WINDOW_SCREEN (window)), - CWStackMode | CWSibling, &changes); - } - -@@ -3252,12 +3252,15 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, - while (xwindow) - { - xwindow_last = xwindow; -- if (get_toplevel && -- (window = gdk_window_lookup_for_display (display, xwindow)) != NULL && -- GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) -- break; - XQueryPointer (xdisplay, xwindow, - &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); -+ if (get_toplevel && -+ (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && -+ GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) -+ { -+ xwindow = xwindow_last; -+ break; -+ } - } - } - else -@@ -3315,16 +3318,16 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, - while (xwindow) - { - xwindow_last = xwindow; -- if (get_toplevel && -- (window = gdk_window_lookup_for_display (display, xwindow)) != NULL && -- GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) -- break; - gdk_error_trap_push (); - XQueryPointer (xdisplay, xwindow, - &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); - gdk_flush (); - if (gdk_error_trap_pop ()) - break; -+ if (get_toplevel && -+ (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && -+ GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) -+ break; - } - } - -diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c -index e47e1be..2bbc96d 100644 ---- a/gtk/gtkmain.c -+++ b/gtk/gtkmain.c -@@ -686,6 +686,8 @@ do_post_parse_initialization (int *argc, - - gettext_initialization (); - -+ signal (SIGPIPE, SIG_IGN); -+ - if (g_fatal_warnings) - { - GLogLevelFlags fatal_mask; -@@ -985,6 +987,15 @@ gtk_init_check (int *argc, - * the GUI for some reason. If you want your program to fall back to a - * textual interface you want to call gtk_init_check() instead. - * -+ * -+ * -+ * Since 2.18, GTK+ calls signal (SIGPIPE, SIG_IGN) -+ * during initialization, to ignore SIGPIPE signals, since these are -+ * almost never wanted in graphical applications. If you do need to -+ * handle SIGPIPE for some reason, reset the handler after gtk_init(), -+ * but notice that other libraries (e.g. libdbus or gvfs) might do -+ * similar things. -+ * - **/ - void - gtk_init (int *argc, char ***argv) -diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c -index c0815a9..36c5a65 100644 ---- a/gtk/gtkwindow.c -+++ b/gtk/gtkwindow.c -@@ -5648,6 +5648,13 @@ gtk_window_compute_configure_request_size (GtkWindow *window, - if (info->resize_height > 0) - *height = info->resize_height; - } -+ -+ /* Don't ever request zero width or height, its not supported by -+ gdk. The size allocation code will round it to 1 anyway but if -+ we do it then the value returned from this function will is -+ not comparable to the size allocation read from the GtkWindow. */ -+ *width = MAX (*width, 1); -+ *height = MAX (*height, 1); - } - - static GtkWindowPosition -diff --git a/modules/printbackends/lpr/gtkprintbackendlpr.c b/modules/printbackends/lpr/gtkprintbackendlpr.c -index eeaaa99..72d9c33 100644 ---- a/modules/printbackends/lpr/gtkprintbackendlpr.c -+++ b/modules/printbackends/lpr/gtkprintbackendlpr.c -@@ -278,8 +278,6 @@ lpr_write (GIOChannel *source, - { - gsize bytes_written; - -- signal (SIGPIPE, SIG_IGN); -- - g_io_channel_write_chars (ps->in, - buf, - bytes_read, diff --git a/gtk2.changes b/gtk2.changes index c1873cf..83e0170 100644 --- a/gtk2.changes +++ b/gtk2.changes @@ -1,17 +1,3 @@ -------------------------------------------------------------------- -Mon Oct 5 23:15:24 CEST 2009 - vuntz@opensuse.org - -- Add gtk2-git-c5d08611.patch: this groups the various code changes - in GTK+ git since 2.18.1. Those are all important fixes: - + Move SIGPIPE suppression to gtk_init and document it, instead - of having it in the lpr backend - + Call XReconfigureWMWindow with proper screen (code error with - compiler warning) - + Fix DirectFB backend compilation - + Plug a memory leak - + bgo#597386: Cannot click buttons more than once - + bgo#588059: Fix notification icon not always visible - ------------------------------------------------------------------- Sat Oct 3 01:28:50 CEST 2009 - vuntz@opensuse.org diff --git a/gtk2.spec b/gtk2.spec index a2e1dd5..a81ad78 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -60,8 +60,6 @@ Patch23: bugzilla-131498-allow-xim-for-all-languages.patch Patch24: gtk2-bnc130159-bgo319483-async-selection-in-gtk-font-selection.diff # PATCH-FIX-UPSTREAM gtk2-build-fix.patch bgo597026 vuntz@novell.com -- Add missing include Patch25: gtk2-build-fix.patch -# PATCH-FIX-UPSTREAM gtk2-git-c5d08611.patch vuntz@opensuse.org -- Various fixes taken from git (this is nearly the diff between 2.18.1 and what will be 2.18.2) -Patch26: gtk2-git-c5d08611.patch # Patches taken from upstream or slated to go upstream. We can expect these to become obsolete # in future releases. # Please don't delete this comment even if this section is empty -- "# empty" should @@ -166,7 +164,6 @@ cp -a %{S:2} . %patch23 -p1 %patch24 -p1 %patch25 -p1 -%patch26 -p1 %patch53 # gnome-patch-translation-update From 501a1b3e5a34d5563afc4f44649c3d7e944a47bbc2b16cffa024f163b3b524c1 Mon Sep 17 00:00:00 2001 From: OBS User buildservice-autocommit Date: Tue, 6 Oct 2009 02:59:03 +0000 Subject: [PATCH 3/3] Updating link to change in openSUSE:Factory/gtk2 revision 75.0 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gtk2?expand=0&rev=bde113e23b28c3b449097b5c8d1746a7 --- gtk2-git-c5d08611.patch | 167 ++++++++++++++++++++++++++++++++++++++++ gtk2.changes | 14 ++++ gtk2.spec | 5 +- 3 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 gtk2-git-c5d08611.patch diff --git a/gtk2-git-c5d08611.patch b/gtk2-git-c5d08611.patch new file mode 100644 index 0000000..f1a0fb4 --- /dev/null +++ b/gtk2-git-c5d08611.patch @@ -0,0 +1,167 @@ +diff --git a/README b/README +index bc2f857..84d6329 100644 +--- a/README ++++ b/README +@@ -44,6 +44,11 @@ Release notes for 2.18 + GDK_NATIVE_WINDOWS makes GDK create a native X11 window for each + GDK window, which might make problematic applications work better. + ++* GTK+ calls signal (SIGPIPE, SIG_IGN) during initialization, to ignore ++ SIGPIPE signals, since these are almost never wanted in graphical ++ applications. If you do need to handle SIGPIPE for some reason, reset ++ the handler after gtk_init(), but notice that other libraries (e.g. ++ libdbus or gvfs) might do similar things. + + Release notes for 2.16 + ====================== +diff --git a/gdk/directfb/gdkwindow-directfb.c b/gdk/directfb/gdkwindow-directfb.c +index c0ff8e1..30ec834 100644 +--- a/gdk/directfb/gdkwindow-directfb.c ++++ b/gdk/directfb/gdkwindow-directfb.c +@@ -2077,7 +2077,8 @@ GdkWindow * + _gdk_windowing_window_at_pointer (GdkDisplay *display, + gint *win_x, + gint *win_y, +- GdkModifierType *mask) ++ GdkModifierType *mask, ++ gboolean get_toplevel) + { + GdkWindow *retval; + gint wx, wy; +@@ -2137,7 +2138,8 @@ _gdk_windowing_get_pointer (GdkDisplay *display, + gdk_directfb_window_get_pointer (_gdk_windowing_window_at_pointer (display, + NULL, + NULL, +- NULL), ++ NULL, ++ FALSE), + x, y, mask); + } + +diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c +index 7f3572f..2bb5551 100644 +--- a/gdk/gdkwindow.c ++++ b/gdk/gdkwindow.c +@@ -2624,6 +2624,8 @@ gdk_window_end_implicit_paint (GdkWindow *window) + /* Reset clip region of the cached GdkGC */ + gdk_gc_set_clip_region (tmp_gc, NULL); + } ++ else ++ gdk_region_destroy (paint->region); + + g_object_unref (paint->pixmap); + g_free (paint); +diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c +index f98290b..a8dd83b 100644 +--- a/gdk/x11/gdkwindow-x11.c ++++ b/gdk/x11/gdkwindow-x11.c +@@ -1726,7 +1726,7 @@ gdk_window_x11_restack_toplevel (GdkWindow *window, + changes.stack_mode = above ? Above : Below; + XReconfigureWMWindow (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), +- GDK_WINDOW_SCREEN (window), ++ gdk_screen_get_number (GDK_WINDOW_SCREEN (window)), + CWStackMode | CWSibling, &changes); + } + +@@ -3252,12 +3252,15 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, + while (xwindow) + { + xwindow_last = xwindow; +- if (get_toplevel && +- (window = gdk_window_lookup_for_display (display, xwindow)) != NULL && +- GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) +- break; + XQueryPointer (xdisplay, xwindow, + &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); ++ if (get_toplevel && ++ (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && ++ GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) ++ { ++ xwindow = xwindow_last; ++ break; ++ } + } + } + else +@@ -3315,16 +3318,16 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, + while (xwindow) + { + xwindow_last = xwindow; +- if (get_toplevel && +- (window = gdk_window_lookup_for_display (display, xwindow)) != NULL && +- GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) +- break; + gdk_error_trap_push (); + XQueryPointer (xdisplay, xwindow, + &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); + gdk_flush (); + if (gdk_error_trap_pop ()) + break; ++ if (get_toplevel && ++ (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && ++ GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) ++ break; + } + } + +diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c +index e47e1be..2bbc96d 100644 +--- a/gtk/gtkmain.c ++++ b/gtk/gtkmain.c +@@ -686,6 +686,8 @@ do_post_parse_initialization (int *argc, + + gettext_initialization (); + ++ signal (SIGPIPE, SIG_IGN); ++ + if (g_fatal_warnings) + { + GLogLevelFlags fatal_mask; +@@ -985,6 +987,15 @@ gtk_init_check (int *argc, + * the GUI for some reason. If you want your program to fall back to a + * textual interface you want to call gtk_init_check() instead. + * ++ * ++ * ++ * Since 2.18, GTK+ calls signal (SIGPIPE, SIG_IGN) ++ * during initialization, to ignore SIGPIPE signals, since these are ++ * almost never wanted in graphical applications. If you do need to ++ * handle SIGPIPE for some reason, reset the handler after gtk_init(), ++ * but notice that other libraries (e.g. libdbus or gvfs) might do ++ * similar things. ++ * + **/ + void + gtk_init (int *argc, char ***argv) +diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c +index c0815a9..36c5a65 100644 +--- a/gtk/gtkwindow.c ++++ b/gtk/gtkwindow.c +@@ -5648,6 +5648,13 @@ gtk_window_compute_configure_request_size (GtkWindow *window, + if (info->resize_height > 0) + *height = info->resize_height; + } ++ ++ /* Don't ever request zero width or height, its not supported by ++ gdk. The size allocation code will round it to 1 anyway but if ++ we do it then the value returned from this function will is ++ not comparable to the size allocation read from the GtkWindow. */ ++ *width = MAX (*width, 1); ++ *height = MAX (*height, 1); + } + + static GtkWindowPosition +diff --git a/modules/printbackends/lpr/gtkprintbackendlpr.c b/modules/printbackends/lpr/gtkprintbackendlpr.c +index eeaaa99..72d9c33 100644 +--- a/modules/printbackends/lpr/gtkprintbackendlpr.c ++++ b/modules/printbackends/lpr/gtkprintbackendlpr.c +@@ -278,8 +278,6 @@ lpr_write (GIOChannel *source, + { + gsize bytes_written; + +- signal (SIGPIPE, SIG_IGN); +- + g_io_channel_write_chars (ps->in, + buf, + bytes_read, diff --git a/gtk2.changes b/gtk2.changes index 83e0170..c1873cf 100644 --- a/gtk2.changes +++ b/gtk2.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Mon Oct 5 23:15:24 CEST 2009 - vuntz@opensuse.org + +- Add gtk2-git-c5d08611.patch: this groups the various code changes + in GTK+ git since 2.18.1. Those are all important fixes: + + Move SIGPIPE suppression to gtk_init and document it, instead + of having it in the lpr backend + + Call XReconfigureWMWindow with proper screen (code error with + compiler warning) + + Fix DirectFB backend compilation + + Plug a memory leak + + bgo#597386: Cannot click buttons more than once + + bgo#588059: Fix notification icon not always visible + ------------------------------------------------------------------- Sat Oct 3 01:28:50 CEST 2009 - vuntz@opensuse.org diff --git a/gtk2.spec b/gtk2.spec index a81ad78..f6af8c0 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -39,7 +39,7 @@ Obsoletes: gtk2-64bit # PreReq: /usr/bin/touch /bin/rm /bin/rmdir Version: 2.18.1 -Release: 1 +Release: 2 # FIXME: when updating to next version, check whether we can remove the workaround for bgo#596977 below (removing -fomit-frame-pointer) Summary: Library for Creation of Graphical User Interfaces (version 2) Source: ftp://ftp.gnome.org/pub/GNOME/sources/%{_name}/2.12/%{_name}-%{version}.tar.bz2 @@ -60,6 +60,8 @@ Patch23: bugzilla-131498-allow-xim-for-all-languages.patch Patch24: gtk2-bnc130159-bgo319483-async-selection-in-gtk-font-selection.diff # PATCH-FIX-UPSTREAM gtk2-build-fix.patch bgo597026 vuntz@novell.com -- Add missing include Patch25: gtk2-build-fix.patch +# PATCH-FIX-UPSTREAM gtk2-git-c5d08611.patch vuntz@opensuse.org -- Various fixes taken from git (this is nearly the diff between 2.18.1 and what will be 2.18.2) +Patch26: gtk2-git-c5d08611.patch # Patches taken from upstream or slated to go upstream. We can expect these to become obsolete # in future releases. # Please don't delete this comment even if this section is empty -- "# empty" should @@ -164,6 +166,7 @@ cp -a %{S:2} . %patch23 -p1 %patch24 -p1 %patch25 -p1 +%patch26 -p1 %patch53 # gnome-patch-translation-update