diff -Nru gtk+3.0-3.4.0/debian/changelog gtk+3.0-3.4.0/debian/changelog --- gtk+3.0-3.4.0/debian/changelog 2012-04-02 14:16:23.000000000 +0000 +++ gtk+3.0-3.4.0/debian/changelog 2012-04-05 16:23:19.000000000 +0000 @@ -1,9 +1,42 @@ -gtk+3.0 (3.4.0-0ubuntu3~ppa1) precise; urgency=low +gtk+3.0 (3.4.0-0ubuntu5~build1) precise; urgency=low + * debian/patches/git_scrolling_performances.patch: + "Don't call gdk_window_process_updates() when scrolling + This can cause lagging when scrolling as it causes us to repaint + on every scroll event. This wasn't historically a great problem, + but with smooth scrolling we get a lot more events, so this + now creates visible lagging on slower machines." + . + That patch needs testing as it could have side effects on scrolling + + -- Sebastien Bacher Thu, 05 Apr 2012 18:21:46 +0200 + +gtk+3.0 (3.4.0-0ubuntu4) precise-proposed; urgency=low + + * debian/patches/no_touchscreen_name_hack.patch: + - drop the hack to make devices which are named with "touch" to be + touchscreen, it's not the case for i.e "appletouch" (lp: #965311) + * debian/patches/git_dont_ignore_button_release_event.patch: + - "Don't ignore button releases after a wmspec move/resize" + * debian/patches/git_shrinkable_widget.patch: + - git patch, should fix empathy resizing horizontally when it shouldn't + (lp: #903779) + + [ Didier Roche ] * debian/patches/git_gtkcellrenderer_grabbing_modifier.patch: - - upstream patch to support support modifier 'tapping' (LP: #969256) + - upstream patch to support modifier 'tapping' (LP: #969256) + + -- Sebastien Bacher Thu, 05 Apr 2012 11:59:18 +0200 + +gtk+3.0 (3.4.0-0ubuntu3) precise; urgency=low + + * debian/patches/043_ubuntu_menu_proxy.patch: + - Revert my changes to add back ubuntu-local. It caused a new bug + (LP: #971459) that caused menubars to pop in and out on startup. + Since the patch was added largely for glade's benefit, we can + just blacklist glade in appmenu-gtk instead. - -- Didier Roche Mon, 02 Apr 2012 16:07:30 +0200 + -- Michael Terry Mon, 02 Apr 2012 10:39:28 -0400 gtk+3.0 (3.4.0-0ubuntu2) precise; urgency=low diff -Nru gtk+3.0-3.4.0/debian/patches/043_ubuntu_menu_proxy.patch gtk+3.0-3.4.0/debian/patches/043_ubuntu_menu_proxy.patch --- gtk+3.0-3.4.0/debian/patches/043_ubuntu_menu_proxy.patch 2012-04-02 14:16:23.000000000 +0000 +++ gtk+3.0-3.4.0/debian/patches/043_ubuntu_menu_proxy.patch 2012-04-05 16:23:19.000000000 +0000 @@ -3,10 +3,10 @@ ## Bug: bug URL Description: Add GtkMenuProxy support for remoting menus. -Index: gtk+3.0-3.3.20/gtk/gtk.h +Index: gtk+3.0-3.4.0/gtk/gtk.h =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtk.h 2012-03-18 21:58:25.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtk.h 2012-03-20 18:48:18.149061459 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtk.h 2012-04-02 10:39:15.705944725 -0400 ++++ gtk+3.0-3.4.0/gtk/gtk.h 2012-04-02 10:39:17.673944746 -0400 @@ -74,6 +74,8 @@ #include #include @@ -16,15 +16,15 @@ #include #include #include -Index: gtk+3.0-3.3.20/gtk/gtkmenubar.c +Index: gtk+3.0-3.4.0/gtk/gtkmenubar.c =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtkmenubar.c 2012-03-18 21:44:21.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtkmenubar.c 2012-03-20 18:48:18.149061459 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtkmenubar.c 2012-04-02 10:39:15.637944725 -0400 ++++ gtk+3.0-3.4.0/gtk/gtkmenubar.c 2012-04-02 10:39:17.673944746 -0400 @@ -65,9 +65,9 @@ { GtkPackDirection pack_direction; GtkPackDirection child_pack_direction; -+ gboolean shown; ++ gboolean shell_shows; }; - @@ -64,7 +64,7 @@ GTK_TYPE_MENU_BAR, GtkMenuBarPrivate); -+ menu_bar->priv->shown = (ubuntu_menu_proxy_get () == NULL); ++ menu_bar->priv->shell_shows = (ubuntu_menu_proxy_get () != NULL); + context = gtk_widget_get_style_context (GTK_WIDGET (menu_bar)); gtk_style_context_add_class (context, GTK_STYLE_CLASS_MENUBAR); @@ -73,7 +73,7 @@ menu_shell = GTK_MENU_SHELL (widget); priv = menu_bar->priv; -+ if (!priv->shown) ++ if (priv->shell_shows) + return; + children = menu_shell->priv->children; @@ -83,7 +83,7 @@ menu_shell = GTK_MENU_SHELL (widget); priv = menu_bar->priv; -+ if (!priv->shown) ++ if (priv->shell_shows) + { + GtkAllocation zero = { 0, 0, 0, 0 }; + GdkWindow *window; @@ -107,36 +107,25 @@ gtk_widget_set_allocation (widget, allocation); if (gtk_widget_get_realized (widget)) -@@ -629,6 +660,64 @@ +@@ -629,6 +660,52 @@ } } +static void -+gtk_menu_bar_recalculate_shown (GtkMenuBar *menu_bar) ++gtk_menu_bar_shell_shows_menubar_cb (GtkSettings *settings, ++ GParamSpec *pspec, ++ gpointer user_data) +{ -+ GtkSettings *settings; -+ gboolean shell_shows; -+ gboolean local; -+ -+ settings = gtk_widget_get_settings (GTK_WIDGET (menu_bar)); ++ GtkMenuBar *menu_bar; + -+ g_object_get (settings, "gtk-shell-shows-menubar", &shell_shows, NULL); -+ g_object_get (menu_bar, "ubuntu-local", &local, NULL); ++ menu_bar = GTK_MENU_BAR (user_data); + -+ menu_bar->priv->shown = local || !shell_shows; ++ g_object_get (settings, "gtk-shell-shows-menubar", &menu_bar->priv->shell_shows, NULL); + + gtk_widget_queue_resize (GTK_WIDGET (menu_bar)); +} + +static void -+gtk_menu_bar_shown_notify_cb (GObject *object, -+ GParamSpec *pspec, -+ gpointer user_data) -+{ -+ gtk_menu_bar_recalculate_shown (GTK_MENU_BAR (user_data)); -+} -+ -+static void +gtk_menu_bar_realize (GtkWidget *widget) +{ + GtkSettings *settings; @@ -146,11 +135,10 @@ + if (ubuntu_menu_proxy_get ()) + { + settings = gtk_widget_get_settings (widget); ++ + g_signal_connect (settings, "notify::gtk-shell-shows-menubar", -+ G_CALLBACK (gtk_menu_bar_shown_notify_cb), widget); -+ g_signal_connect (widget, "notify::ubuntu-local", -+ G_CALLBACK (gtk_menu_bar_shown_notify_cb), widget); -+ gtk_menu_bar_recalculate_shown (GTK_MENU_BAR (widget)); ++ G_CALLBACK (gtk_menu_bar_shell_shows_menubar_cb), widget); ++ gtk_menu_bar_shell_shows_menubar_cb (settings, NULL, widget); + } +} + @@ -162,8 +150,8 @@ + if (ubuntu_menu_proxy_get ()) + { + settings = gtk_widget_get_settings (widget); -+ g_signal_handlers_disconnect_by_func (settings, gtk_menu_bar_shown_notify_cb, widget); -+ g_signal_handlers_disconnect_by_func (widget, gtk_menu_bar_shown_notify_cb, widget); ++ ++ g_signal_handlers_disconnect_by_func (settings, gtk_menu_bar_shell_shows_menubar_cb, widget); + } + + GTK_WIDGET_CLASS (gtk_menu_bar_parent_class)->unrealize (widget); @@ -172,7 +160,7 @@ static gint gtk_menu_bar_draw (GtkWidget *widget, cairo_t *cr) -@@ -737,8 +826,16 @@ +@@ -737,8 +814,16 @@ { GtkMenuShell *menu_shell = GTK_MENU_SHELL (menubars->data); @@ -191,7 +179,7 @@ g_list_free (menubars); -@@ -805,6 +902,16 @@ +@@ -805,6 +890,16 @@ add_to_window (GTK_WINDOW (toplevel), menubar); } @@ -208,10 +196,10 @@ /** * _gtk_menu_bar_cycle_focus: * @menubar: a #GtkMenuBar -Index: gtk+3.0-3.3.20/gtk/gtkmenuitem.c +Index: gtk+3.0-3.4.0/gtk/gtkmenuitem.c =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtkmenuitem.c 2012-03-19 03:56:09.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtkmenuitem.c 2012-03-20 18:48:18.153061459 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtkmenuitem.c 2012-04-02 10:39:15.741944725 -0400 ++++ gtk+3.0-3.4.0/gtk/gtkmenuitem.c 2012-04-02 10:39:17.677944746 -0400 @@ -36,6 +36,7 @@ #include "gtkmenuprivate.h" #include "gtkseparatormenuitem.h" @@ -240,10 +228,10 @@ return TRUE; } -Index: gtk+3.0-3.3.20/gtk/gtkmenushell.c +Index: gtk+3.0-3.4.0/gtk/gtkmenushell.c =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtkmenushell.c 2012-03-19 03:56:09.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtkmenushell.c 2012-03-20 18:48:18.157061458 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtkmenushell.c 2012-04-02 10:39:15.689944725 -0400 ++++ gtk+3.0-3.4.0/gtk/gtkmenushell.c 2012-04-02 10:39:17.681944746 -0400 @@ -46,6 +46,7 @@ #include "gtkmenuitemprivate.h" #include "gtkmenushellprivate.h" @@ -252,116 +240,15 @@ #include "gtkmnemonichash.h" #include "gtkwindow.h" #include "gtkprivate.h" -@@ -79,7 +80,8 @@ - - enum { - PROP_0, -- PROP_TAKE_FOCUS -+ PROP_TAKE_FOCUS, -+ PROP_LOCAL - }; - - /* Terminology: -@@ -451,6 +453,14 @@ - TRUE, - GTK_PARAM_READWRITE)); - -+ g_object_class_install_property (object_class, -+ PROP_LOCAL, -+ g_param_spec_boolean ("ubuntu-local", -+ P_("Local menu"), -+ P_("Determines whether the menu is local"), -+ FALSE, -+ GTK_PARAM_READWRITE)); -+ - gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_MENU_SHELL_ACCESSIBLE); - - g_type_class_add_private (object_class, sizeof (GtkMenuShellPrivate)); -@@ -463,6 +473,14 @@ - } - - static void -+show_local_notify (UbuntuMenuProxy *proxy, -+ GParamSpec *pspec, -+ GObject *shell) -+{ -+ g_object_notify (shell, "ubuntu-local"); -+} -+ -+static void - gtk_menu_shell_init (GtkMenuShell *menu_shell) - { - GtkMenuShellPrivate *priv; -@@ -472,6 +490,13 @@ +@@ -472,6 +473,7 @@ GtkMenuShellPrivate); menu_shell->priv = priv; priv->take_focus = TRUE; + priv->proxy = ubuntu_menu_proxy_get (); -+ priv->local = FALSE; -+ -+ if (priv->proxy != NULL) -+ g_signal_connect (priv->proxy, "notify::show-local", -+ G_CALLBACK (show_local_notify), -+ menu_shell); } static void -@@ -481,12 +506,16 @@ - GParamSpec *pspec) - { - GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); -+ GtkMenuShellPrivate *priv = menu_shell->priv; - - switch (prop_id) - { - case PROP_TAKE_FOCUS: - gtk_menu_shell_set_take_focus (menu_shell, g_value_get_boolean (value)); - break; -+ case PROP_LOCAL: -+ priv->local = g_value_get_boolean (value); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -500,12 +529,23 @@ - GParamSpec *pspec) - { - GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); -+ GtkMenuShellPrivate *priv = menu_shell->priv; -+ gboolean local; - - switch (prop_id) - { - case PROP_TAKE_FOCUS: - g_value_set_boolean (value, gtk_menu_shell_get_take_focus (menu_shell)); - break; -+ case PROP_LOCAL: -+ if (priv->proxy == NULL || ubuntu_menu_proxy_show_local (priv->proxy)) { -+ local = TRUE; -+ } else { -+ local = priv->local; -+ } -+ -+ g_value_set_boolean (value, local); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -518,6 +558,13 @@ - GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); - GtkMenuShellPrivate *priv = menu_shell->priv; - -+ if (priv->proxy != NULL) -+ { -+ g_signal_handlers_disconnect_by_func (priv->proxy, -+ show_local_notify, -+ menu_shell); -+ } -+ - if (priv->mnemonic_hash) - _gtk_mnemonic_hash_free (priv->mnemonic_hash); - if (priv->key_hash) -@@ -580,10 +627,20 @@ +@@ -580,10 +582,20 @@ GtkWidget *child, gint position) { @@ -382,7 +269,7 @@ } static void -@@ -1987,6 +2044,54 @@ +@@ -1987,6 +1999,54 @@ } } @@ -437,10 +324,10 @@ /** * gtk_menu_shell_get_selected_item: * @menu_shell: a #GtkMenuShell -Index: gtk+3.0-3.3.20/gtk/gtkmenushellprivate.h +Index: gtk+3.0-3.4.0/gtk/gtkmenushellprivate.h =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtkmenushellprivate.h 2012-03-18 21:44:21.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtkmenushellprivate.h 2012-03-20 18:48:18.161061458 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtkmenushellprivate.h 2012-04-02 10:39:15.621944724 -0400 ++++ gtk+3.0-3.4.0/gtk/gtkmenushellprivate.h 2012-04-02 10:39:17.681944746 -0400 @@ -22,6 +22,7 @@ #include #include @@ -449,20 +336,19 @@ G_BEGIN_DECLS -@@ -52,6 +53,9 @@ +@@ -52,6 +53,8 @@ GtkKeyHash *key_hash; GdkDevice *grab_pointer; + + UbuntuMenuProxy *proxy; -+ gboolean local; }; void _gtk_menu_shell_select_last (GtkMenuShell *menu_shell, -Index: gtk+3.0-3.3.20/gtk/gtk.symbols +Index: gtk+3.0-3.4.0/gtk/gtk.symbols =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtk.symbols 2012-03-18 21:44:21.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtk.symbols 2012-03-20 18:48:35.053062277 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtk.symbols 2012-04-02 10:39:15.721944725 -0400 ++++ gtk+3.0-3.4.0/gtk/gtk.symbols 2012-04-02 10:39:17.685944746 -0400 @@ -3922,3 +3922,9 @@ gtk_window_unmaximize gtk_window_unstick @@ -473,10 +359,10 @@ +ubuntu_menu_proxy_insert +ubuntu_menu_proxy_module_get_type +ubuntu_menu_proxy_module_get -Index: gtk+3.0-3.3.20/gtk/gtkwindow.c +Index: gtk+3.0-3.4.0/gtk/gtkwindow.c =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtkwindow.c 2012-03-18 21:44:22.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtkwindow.c 2012-03-20 18:48:18.201061460 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtkwindow.c 2012-04-02 10:39:15.769944726 -0400 ++++ gtk+3.0-3.4.0/gtk/gtkwindow.c 2012-04-02 10:39:17.701944746 -0400 @@ -119,6 +119,8 @@ GdkWindow *grip_window; @@ -529,10 +415,10 @@ default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; -Index: gtk+3.0-3.3.20/gtk/Makefile.am +Index: gtk+3.0-3.4.0/gtk/Makefile.am =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/Makefile.am 2012-03-19 03:25:26.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/Makefile.am 2012-03-20 18:48:31.489062103 +0100 +--- gtk+3.0-3.4.0.orig/gtk/Makefile.am 2012-04-02 10:39:15.653944725 -0400 ++++ gtk+3.0-3.4.0/gtk/Makefile.am 2012-04-02 10:39:17.701944746 -0400 @@ -272,6 +272,8 @@ gtkmenu.h \ gtkmenubar.h \ @@ -551,10 +437,10 @@ gtkmenushell.c \ gtkmenutoolbutton.c \ gtkmessagedialog.c \ -Index: gtk+3.0-3.3.20/gtk/ubuntumenuproxy.c +Index: gtk+3.0-3.4.0/gtk/ubuntumenuproxy.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gtk+3.0-3.3.20/gtk/ubuntumenuproxy.c 2012-03-20 18:48:18.205061461 +0100 ++++ gtk+3.0-3.4.0/gtk/ubuntumenuproxy.c 2012-04-02 10:39:17.705944746 -0400 @@ -0,0 +1,246 @@ +/* + * Copyright (C) 2010 Canonical, Ltd. @@ -802,10 +688,10 @@ +{ + g_signal_emit (proxy, menu_proxy_signals[ACTIVATE_MENU], 0, widget); +} -Index: gtk+3.0-3.3.20/gtk/ubuntumenuproxy.h +Index: gtk+3.0-3.4.0/gtk/ubuntumenuproxy.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gtk+3.0-3.3.20/gtk/ubuntumenuproxy.h 2012-03-20 18:48:18.205061461 +0100 ++++ gtk+3.0-3.4.0/gtk/ubuntumenuproxy.h 2012-04-02 10:39:17.705944746 -0400 @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2010 Canonical, Ltd. @@ -880,10 +766,10 @@ +G_END_DECLS + +#endif /* __UBUNTU_MENU_PROXY_H__ */ -Index: gtk+3.0-3.3.20/gtk/ubuntumenuproxymodule.c +Index: gtk+3.0-3.4.0/gtk/ubuntumenuproxymodule.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gtk+3.0-3.3.20/gtk/ubuntumenuproxymodule.c 2012-03-20 18:48:18.209061462 +0100 ++++ gtk+3.0-3.4.0/gtk/ubuntumenuproxymodule.c 2012-04-02 10:39:17.705944746 -0400 @@ -0,0 +1,210 @@ +/* + * Copyright (C) 2010 Canonical, Ltd. @@ -1095,10 +981,10 @@ + + return proxy_module_singleton; +} -Index: gtk+3.0-3.3.20/gtk/ubuntumenuproxymodule.h +Index: gtk+3.0-3.4.0/gtk/ubuntumenuproxymodule.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gtk+3.0-3.3.20/gtk/ubuntumenuproxymodule.h 2012-03-20 18:48:18.213061462 +0100 ++++ gtk+3.0-3.4.0/gtk/ubuntumenuproxymodule.h 2012-04-02 10:39:17.705944746 -0400 @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2010 Canonical, Ltd. @@ -1169,10 +1055,10 @@ +G_END_DECLS + +#endif /* __UBUNTU_MENU_PROXY_MODULE_H__ */ -Index: gtk+3.0-3.3.20/gtk/gtkmnemonichash.c +Index: gtk+3.0-3.4.0/gtk/gtkmnemonichash.c =================================================================== ---- gtk+3.0-3.3.20.orig/gtk/gtkmnemonichash.c 2012-03-18 21:44:21.000000000 +0100 -+++ gtk+3.0-3.3.20/gtk/gtkmnemonichash.c 2012-03-20 18:48:18.221061461 +0100 +--- gtk+3.0-3.4.0.orig/gtk/gtkmnemonichash.c 2012-04-02 10:39:15.793944726 -0400 ++++ gtk+3.0-3.4.0/gtk/gtkmnemonichash.c 2012-04-02 10:39:17.705944746 -0400 @@ -18,6 +18,9 @@ */ diff -Nru gtk+3.0-3.4.0/debian/patches/git_dont_ignore_button_release_event.patch gtk+3.0-3.4.0/debian/patches/git_dont_ignore_button_release_event.patch --- gtk+3.0-3.4.0/debian/patches/git_dont_ignore_button_release_event.patch 1970-01-01 00:00:00.000000000 +0000 +++ gtk+3.0-3.4.0/debian/patches/git_dont_ignore_button_release_event.patch 2012-04-05 16:23:19.000000000 +0000 @@ -0,0 +1,70 @@ +From 7b0fd635fa39a27693655171a4cdc0150ae476ed Mon Sep 17 00:00:00 2001 +From: Rui Matos +Date: Wed, 04 Apr 2012 13:54:32 +0000 +Subject: x11: Don't ignore button releases after a wmspec move/resize + +_gdk_x11_moveresize_configure_done() isn't called for wmspec +moves/resizes so we don't have a way to notice when a wmspec +move/resize ends and consequently untrigger the sending of +_NET_WM_MOVERESIZE_CANCEL which results in this message always being +sent on the next button release event. In that case we are marking +that event as handled so it isn't processed further which breaks +button press/release event handling in several widgets. + +To fix this we simply allow the normal event handling machinery to run +after sending the _NET_WM_MOVERESIZE_CANCEL message. + +https://bugzilla.gnome.org/show_bug.cgi?id=673328 +--- +diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c +index 981572d..4ef6f46 100644 +--- a/gdk/x11/gdkwindow-x11.c ++++ b/gdk/x11/gdkwindow-x11.c +@@ -4079,7 +4079,7 @@ wmspec_send_message (GdkDisplay *display, + (XEvent *)&xclient); + } + +-static gboolean ++static void + handle_wmspec_button_release (GdkDisplay *display, + XEvent *xevent) + { +@@ -4110,11 +4110,8 @@ handle_wmspec_button_release (GdkDisplay *display, + { + display_x11->wm_moveresize_button = 0; + wmspec_send_message (display, window, 0, 0, _NET_WM_MOVERESIZE_CANCEL, 0); +- return TRUE; + } + } +- +- return FALSE; + } + + static void +@@ -4395,11 +4392,11 @@ _gdk_x11_moveresize_handle_event (XEvent *event) + GdkDisplay *display = gdk_x11_lookup_xdisplay (event->xany.display); + MoveResizeData *mv_resize = get_move_resize_data (display, FALSE); + +- if (handle_wmspec_button_release (display, event)) +- return TRUE; +- + if (!mv_resize || !mv_resize->moveresize_window) +- return FALSE; ++ { ++ handle_wmspec_button_release (display, event); ++ return FALSE; ++ } + + button_mask = GDK_BUTTON1_MASK << (mv_resize->moveresize_button - 1); + +@@ -4479,8 +4476,6 @@ _gdk_x11_moveresize_configure_done (GdkDisplay *display, + XEvent *tmp_event; + MoveResizeData *mv_resize = get_move_resize_data (display, FALSE); + +- GDK_X11_DISPLAY (display)->wm_moveresize_button = 0; +- + if (!mv_resize || window != mv_resize->moveresize_window) + return FALSE; + +-- +cgit v0.9.0.2 diff -Nru gtk+3.0-3.4.0/debian/patches/git_scrolling_performances.patch gtk+3.0-3.4.0/debian/patches/git_scrolling_performances.patch --- gtk+3.0-3.4.0/debian/patches/git_scrolling_performances.patch 1970-01-01 00:00:00.000000000 +0000 +++ gtk+3.0-3.4.0/debian/patches/git_scrolling_performances.patch 2012-04-05 16:23:19.000000000 +0000 @@ -0,0 +1,235 @@ +From 917ca6a802af574232f413fdf904e1633d706b52 Mon Sep 17 00:00:00 2001 +From: Benjamin Otte +Date: Thu, 05 Apr 2012 13:48:51 +0000 +Subject: gtk: Don't call gdk_window_process_updates() when scrolling + +This can cause lagging when scrolling as it causes us to repaint +on every scroll event. This wasn't historically a great problem, +but with smooth scrolling we get a lot more events, so this +now creates visible lagging on slower machines. +--- +diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c +index fc19bad..33482e1 100644 +--- a/gtk/gtkiconview.c ++++ b/gtk/gtkiconview.c +@@ -2360,20 +2360,6 @@ gtk_icon_view_real_toggle_cursor_item (GtkIconView *icon_view) + } + } + +-/* Internal functions */ +-static void +-gtk_icon_view_process_updates (GtkIconView *icon_view) +-{ +- /* Prior to drawing, we check if a layout has been scheduled. If so, +- * do it now that all cell view items have valid sizes before we proceeed +- * (and resize the bin_window if required). +- */ +- if (icon_view->priv->layout_idle_id != 0) +- gtk_icon_view_layout (icon_view); +- +- gdk_window_process_updates (icon_view->priv->bin_window, TRUE); +-} +- + static void + gtk_icon_view_set_hadjustment_values (GtkIconView *icon_view) + { +@@ -2511,8 +2497,6 @@ gtk_icon_view_adjustment_changed (GtkAdjustment *adjustment, + gtk_icon_view_update_rubberband (GTK_WIDGET (icon_view)); + + _gtk_icon_view_accessible_adjustment_changed (icon_view); +- +- gtk_icon_view_process_updates (icon_view); + } + } + +diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c +index ef3d0be..fa87ea7 100644 +--- a/gtk/gtkimage.c ++++ b/gtk/gtkimage.c +@@ -1312,9 +1312,6 @@ animation_timeout (gpointer data) + gdk_threads_add_timeout (delay, animation_timeout, image); + + gtk_widget_queue_draw (widget); +- +- if (gtk_widget_is_drawable (widget)) +- gdk_window_process_updates (gtk_widget_get_window (widget), TRUE); + } + + return FALSE; +diff --git a/gtk/gtklayout.c b/gtk/gtklayout.c +index 147ea92..10528bb 100644 +--- a/gtk/gtklayout.c ++++ b/gtk/gtklayout.c +@@ -1123,7 +1123,5 @@ gtk_layout_adjustment_changed (GtkAdjustment *adjustment, + gdk_window_move (priv->bin_window, + - gtk_adjustment_get_value (priv->hadjustment), + - gtk_adjustment_get_value (priv->vadjustment)); +- +- gdk_window_process_updates (priv->bin_window, TRUE); + } + } +diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c +index c7a2b52..c35b48e 100644 +--- a/gtk/gtkrange.c ++++ b/gtk/gtkrange.c +@@ -116,8 +116,6 @@ struct _GtkRangePrivate + gint slider_start; /* Slider range along the long dimension, in widget->window coords */ + gint slider_end; + +- guint repaint_id; +- + /* Steppers are: < > ---- < > + * a b c d + */ +@@ -1499,10 +1497,6 @@ gtk_range_destroy (GtkWidget *widget) + + gtk_range_remove_step_timer (range); + +- if (priv->repaint_id) +- g_source_remove (priv->repaint_id); +- priv->repaint_id = 0; +- + if (priv->adjustment) + { + g_signal_handlers_disconnect_by_func (priv->adjustment, +@@ -2034,11 +2028,6 @@ gtk_range_draw (GtkWidget *widget, + "focus-padding", &focus_padding, + NULL); + +- /* we're now exposing, so there's no need to force early repaints */ +- if (priv->repaint_id) +- g_source_remove (priv->repaint_id); +- priv->repaint_id = 0; +- + gtk_range_calc_marks (range); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); + +@@ -2984,20 +2973,6 @@ gtk_range_adjustment_changed (GtkAdjustment *adjustment, + */ + } + +-static gboolean +-force_repaint (gpointer data) +-{ +- GtkRange *range = GTK_RANGE (data); +- GtkRangePrivate *priv = range->priv; +- GtkWidget *widget = GTK_WIDGET (range); +- +- priv->repaint_id = 0; +- if (gtk_widget_is_drawable (widget)) +- gdk_window_process_updates (gtk_widget_get_window (widget), FALSE); +- +- return FALSE; +-} +- + static void + gtk_range_adjustment_value_changed (GtkAdjustment *adjustment, + gpointer data) +@@ -3014,11 +2989,6 @@ gtk_range_adjustment_value_changed (GtkAdjustment *adjustment, + (GTK_IS_SCALE (range) && gtk_scale_get_draw_value (GTK_SCALE (range)))) + { + gtk_widget_queue_draw (GTK_WIDGET (range)); +- /* setup a timer to ensure the range isn't lagging too much behind the scroll position */ +- if (!priv->repaint_id) +- priv->repaint_id = gdk_threads_add_timeout_full (GDK_PRIORITY_EVENTS, +- 181, force_repaint, +- range, NULL); + } + + /* Note that we don't round off to priv->round_digits here. +diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c +index 33f2b5c..601f939 100644 +--- a/gtk/gtktextview.c ++++ b/gtk/gtktextview.c +@@ -7700,26 +7700,6 @@ gtk_text_view_value_changed (GtkAdjustment *adjustment, + */ + gtk_text_view_validate_onscreen (text_view); + +- /* process exposes */ +- if (gtk_widget_get_realized (GTK_WIDGET (text_view))) +- { +- DV (g_print ("Processing updates (%s)\n", G_STRLOC)); +- +- if (priv->left_window) +- gdk_window_process_updates (priv->left_window->bin_window, TRUE); +- +- if (priv->right_window) +- gdk_window_process_updates (priv->right_window->bin_window, TRUE); +- +- if (priv->top_window) +- gdk_window_process_updates (priv->top_window->bin_window, TRUE); +- +- if (priv->bottom_window) +- gdk_window_process_updates (priv->bottom_window->bin_window, TRUE); +- +- gdk_window_process_updates (priv->text_window->bin_window, TRUE); +- } +- + /* If this got installed, get rid of it, it's just a waste of time. */ + if (priv->first_validate_idle != 0) + { +diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c +index c3ec3d6..96dfe39 100644 +--- a/gtk/gtktreeview.c ++++ b/gtk/gtktreeview.c +@@ -6810,21 +6810,6 @@ install_presize_handler (GtkTreeView *tree_view) + } + } + +-static void +-gtk_tree_view_bin_process_updates (GtkTreeView *tree_view) +-{ +- /* Prior to drawing, we make sure the visible area is validated. */ +- if (tree_view->priv->presize_handler_timer) +- { +- g_source_remove (tree_view->priv->presize_handler_timer); +- tree_view->priv->presize_handler_timer = 0; +- +- do_presize_handler (tree_view); +- } +- +- gdk_window_process_updates (tree_view->priv->bin_window, TRUE); +-} +- + static gboolean + scroll_sync_handler (GtkTreeView *tree_view) + { +@@ -9393,10 +9378,6 @@ gtk_tree_view_clamp_node_visible (GtkTreeView *tree_view, + path = _gtk_tree_path_new_from_rbtree (tree, node); + if (path) + { +- /* We process updates because we want to clear old selected items when we scroll. +- * if this is removed, we get a "selection streak" at the bottom. */ +- gtk_tree_view_bin_process_updates (tree_view); +- + gtk_tree_view_scroll_to_cell (tree_view, path, NULL, FALSE, 0.0, 0.0); + gtk_tree_path_free (path); + } +@@ -11311,9 +11292,6 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment, + if (!tree_view->priv->in_top_row_to_dy) + gtk_tree_view_dy_to_top_row (tree_view); + } +- +- gdk_window_process_updates (tree_view->priv->header_window, TRUE); +- gtk_tree_view_bin_process_updates (tree_view); + } + } + +diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c +index 4829cde..03b05e2 100644 +--- a/gtk/gtkviewport.c ++++ b/gtk/gtkviewport.c +@@ -901,10 +901,7 @@ gtk_viewport_adjustment_value_changed (GtkAdjustment *adjustment, + new_y = - gtk_adjustment_get_value (vadjustment); + + if (new_x != old_x || new_y != old_y) +- { +- gdk_window_move (priv->bin_window, new_x, new_y); +- gdk_window_process_updates (priv->bin_window, TRUE); +- } ++ gdk_window_move (priv->bin_window, new_x, new_y); + } + } + +-- +cgit v0.9.0.2 diff -Nru gtk+3.0-3.4.0/debian/patches/git_shrinkable_widget.patch gtk+3.0-3.4.0/debian/patches/git_shrinkable_widget.patch --- gtk+3.0-3.4.0/debian/patches/git_shrinkable_widget.patch 1970-01-01 00:00:00.000000000 +0000 +++ gtk+3.0-3.4.0/debian/patches/git_shrinkable_widget.patch 2012-04-05 16:23:19.000000000 +0000 @@ -0,0 +1,39 @@ +From 12d6b0fe6251e77dbda8c3daeefacb028a267750 Mon Sep 17 00:00:00 2001 +From: Benjamin Otte +Date: Thu, 05 Apr 2012 09:30:41 +0000 +Subject: paned: Shrinkable widgets don't require a size + +This could otherwise lead to very funny size request behaviors, in +particular in empathy. + +https://bugzilla.gnome.org/show_bug.cgi?id=587441 +--- +diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c +index f2fbe13..5b374b2 100644 +--- a/gtk/gtkpaned.c ++++ b/gtk/gtkpaned.c +@@ -904,7 +904,10 @@ gtk_paned_get_preferred_size (GtkWidget *widget, + if (priv->child1 && gtk_widget_get_visible (priv->child1)) + { + get_preferred_size_for_size (priv->child1, orientation, size, &child_min, &child_nat); +- *minimum = child_min; ++ if (priv->child1_shrink && priv->orientation == orientation) ++ *minimum = 0; ++ else ++ *minimum = child_min; + *natural = child_nat; + } + +@@ -914,7 +917,8 @@ gtk_paned_get_preferred_size (GtkWidget *widget, + + if (priv->orientation == orientation) + { +- *minimum += child_min; ++ if (!priv->child2_shrink) ++ *minimum += child_min; + *natural += child_nat; + } + else +-- +cgit v0.9.0.2 + diff -Nru gtk+3.0-3.4.0/debian/patches/no_touchscreen_name_hack.patch gtk+3.0-3.4.0/debian/patches/no_touchscreen_name_hack.patch --- gtk+3.0-3.4.0/debian/patches/no_touchscreen_name_hack.patch 1970-01-01 00:00:00.000000000 +0000 +++ gtk+3.0-3.4.0/debian/patches/no_touchscreen_name_hack.patch 2012-04-05 16:23:19.000000000 +0000 @@ -0,0 +1,14 @@ +diff -Nur gtk+-3.4.0.orig/gdk/x11/gdkdevicemanager-xi2.c gtk+-3.4.0/gdk/x11/gdkdevicemanager-xi2.c +--- gtk+-3.4.0.orig/gdk/x11/gdkdevicemanager-xi2.c 2012-04-05 11:45:09.995748328 +0200 ++++ gtk+-3.4.0/gdk/x11/gdkdevicemanager-xi2.c 2012-04-05 11:45:58.275750665 +0200 +@@ -331,9 +331,7 @@ + input_source = GDK_SOURCE_ERASER; + else if (strstr (tmp_name, "cursor")) + input_source = GDK_SOURCE_CURSOR; +- else if (strstr (tmp_name, "finger") || +- (strstr (tmp_name, "touch") && +- !strstr (tmp_name, "touchpad"))) ++ else if (strstr (tmp_name, "finger")) + input_source = GDK_SOURCE_TOUCHSCREEN; + else if (strstr (tmp_name, "wacom") || + strstr (tmp_name, "pen")) diff -Nru gtk+3.0-3.4.0/debian/patches/series gtk+3.0-3.4.0/debian/patches/series --- gtk+3.0-3.4.0/debian/patches/series 2012-04-02 14:16:23.000000000 +0000 +++ gtk+3.0-3.4.0/debian/patches/series 2012-04-05 16:23:19.000000000 +0000 @@ -14,3 +14,7 @@ upstream_treeview_rendering.patch git_filechooser_selection.patch git_gtkcellrenderer_grabbing_modifier.patch +no_touchscreen_name_hack.patch +git_dont_ignore_button_release_event.patch +git_shrinkable_widget.patch +git_scrolling_performances.patch