diff -Nru gtk+3.0-3.10.8/debian/changelog gtk+3.0-3.10.8/debian/changelog --- gtk+3.0-3.10.8/debian/changelog 2014-04-07 14:59:43.000000000 +0000 +++ gtk+3.0-3.10.8/debian/changelog 2014-05-13 14:25:00.000000000 +0000 @@ -1,3 +1,16 @@ +gtk+3.0 (3.10.8-0ubuntu2ppa1) trusty; urgency=medium + + * debian/patches/signal-menu-close-transition-in-idle.patch: + - postpone menu close transition by deferring to an idle + + -- William Hua Fri, 09 May 2014 13:10:29 -0400 + +gtk+3.0 (3.10.8-0ubuntu2) trusty; urgency=medium + + * Backport gtk-dialogs-use-header property from 3.12. + + -- Iain Lane Thu, 24 Apr 2014 16:42:23 +0100 + gtk+3.0 (3.10.8-0ubuntu1) trusty; urgency=medium * New upstream version, drop backports included in the update diff -Nru gtk+3.0-3.10.8/debian/patches/0001-Add-a-setting-for-dialog-headers.patch gtk+3.0-3.10.8/debian/patches/0001-Add-a-setting-for-dialog-headers.patch --- gtk+3.0-3.10.8/debian/patches/0001-Add-a-setting-for-dialog-headers.patch 1970-01-01 00:00:00.000000000 +0000 +++ gtk+3.0-3.10.8/debian/patches/0001-Add-a-setting-for-dialog-headers.patch 2014-05-13 14:25:00.000000000 +0000 @@ -0,0 +1,66 @@ +From 3701de14a11e1b3e7cab4d5d2676c0c80928f278 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Wed, 15 Jan 2014 00:33:30 -0500 +Subject: [PATCH] Add a setting for dialog headers + +This setting will let us keep traditional appearance +of dialogs on platforms where this is expected. +The new setting is called gtk-dialogs-use-header, backed +by the Gtk/DialogsUseHeader xsetting. +--- + gdk/x11/gdksettings.c | 1 + + gtk/gtksettings.c | 22 ++++++++++++++++++++++ + 2 files changed, 23 insertions(+) + +Index: b/gdk/x11/gdksettings.c +=================================================================== +--- a/gdk/x11/gdksettings.c ++++ b/gdk/x11/gdksettings.c +@@ -58,6 +58,7 @@ + {"Gtk/ShellShowsAppMenu", "gtk-shell-shows-app-menu"}, + {"Gtk/ShellShowsMenubar", "gtk-shell-shows-menubar"}, + {"Gtk/ShellShowsDesktop", "gtk-shell-shows-desktop"}, ++ {"Gtk/DialogsUseHeader", "gtk-dialogs-use-header"}, + {"Gtk/EnablePrimaryPaste", "gtk-enable-primary-paste"}, + {"Gtk/RecentFilesMaxAge", "gtk-recent-files-max-age"}, + {"Gtk/RecentFilesEnabled", "gtk-recent-files-enabled"}, +Index: b/gtk/gtksettings.c +=================================================================== +--- a/gtk/gtksettings.c ++++ b/gtk/gtksettings.c +@@ -210,6 +210,7 @@ + PROP_SHELL_SHOWS_APP_MENU, + PROP_SHELL_SHOWS_MENUBAR, + PROP_SHELL_SHOWS_DESKTOP, ++ PROP_DIALOGS_USE_HEADER, + PROP_ENABLE_PRIMARY_PASTE, + PROP_RECENT_FILES_ENABLED + }; +@@ -1539,6 +1540,27 @@ + g_assert (result == PROP_SHELL_SHOWS_DESKTOP); + + /** ++ * GtkSettings:gtk-dialogs-use-header: ++ * ++ * Whether builtin GTK+ dialogs such as the file chooser, the ++ * color chooser or the font chooser will use a header bar at ++ * the top to show action widgets, or an action area at the bottom. ++ * ++ * This setting does not affect custom dialogs using GtkDialog ++ * directly, or message dialogs. ++ * ++ * Since: 3.12 ++ */ ++ result = settings_install_property_parser (class, ++ g_param_spec_boolean ("gtk-dialogs-use-header", ++ P_("Dialogs use header bar"), ++ P_("Whether builtin GTK+ dialogs should use a header bar instead of an action area."), ++ FALSE, ++ GTK_PARAM_READWRITE), ++ NULL); ++ g_assert (result == PROP_DIALOGS_USE_HEADER); ++ ++ /** + * GtkSettings:gtk-enable-primary-paste: + * + * Whether a middle click on a mouse should paste the diff -Nru gtk+3.0-3.10.8/debian/patches/series gtk+3.0-3.10.8/debian/patches/series --- gtk+3.0-3.10.8/debian/patches/series 2014-04-07 14:59:43.000000000 +0000 +++ gtk+3.0-3.10.8/debian/patches/series 2014-05-13 14:25:00.000000000 +0000 @@ -19,3 +19,5 @@ git_subtitle_typo.patch git_grid_theming.patch x-canonical-accel.patch +0001-Add-a-setting-for-dialog-headers.patch +signal-menu-close-transition-in-idle.patch diff -Nru gtk+3.0-3.10.8/debian/patches/signal-menu-close-transition-in-idle.patch gtk+3.0-3.10.8/debian/patches/signal-menu-close-transition-in-idle.patch --- gtk+3.0-3.10.8/debian/patches/signal-menu-close-transition-in-idle.patch 1970-01-01 00:00:00.000000000 +0000 +++ gtk+3.0-3.10.8/debian/patches/signal-menu-close-transition-in-idle.patch 2014-05-13 14:25:00.000000000 +0000 @@ -0,0 +1,75 @@ +From 289eb367d435668fc0515fdc33d0c73c33884cdd Mon Sep 17 00:00:00 2001 +From: William Hua +Date: Fri, 9 May 2014 13:05:35 -0400 +Subject: [PATCH] Signal menu close transition in idle. + +--- + gtk/gtkmenutrackeritem.c | 39 ++++++++++++++++++++++++++++++++++----- + 1 file changed, 34 insertions(+), 5 deletions(-) + +diff --git a/gtk/gtkmenutrackeritem.c b/gtk/gtkmenutrackeritem.c +index 232ac37..53fdc30 100644 +--- a/gtk/gtkmenutrackeritem.c ++++ b/gtk/gtkmenutrackeritem.c +@@ -837,24 +837,53 @@ gtk_menu_tracker_opener_changed (GActionGroup *action_group, + gtk_menu_tracker_opener_update (opener); + } + ++typedef struct ++{ ++ GActionGroup *action_group; ++ gchar *action_name; ++} GtkMenuTrackerCloser; ++ ++static void ++gtk_menu_tracker_closer_real_free (gpointer data) ++{ ++ GtkMenuTrackerCloser *closer = data; ++ ++ g_free (closer->action_name); ++ g_object_unref (closer->action_group); ++ g_slice_free (GtkMenuTrackerCloser, closer); ++} ++ ++static gboolean ++gtk_menu_tracker_closer_free (gpointer user_data) ++{ ++ GtkMenuTrackerCloser *closer = user_data; ++ ++ g_action_group_change_action_state (closer->action_group, ++ closer->action_name, ++ g_variant_new_boolean (FALSE)); ++ ++ return G_SOURCE_REMOVE; ++} ++ + static void + gtk_menu_tracker_opener_free (gpointer data) + { + GtkMenuTrackerOpener *opener = data; ++ GtkMenuTrackerCloser *closer; + + g_signal_handlers_disconnect_by_func (opener->item->observable, gtk_menu_tracker_opener_added, opener); + g_signal_handlers_disconnect_by_func (opener->item->observable, gtk_menu_tracker_opener_removed, opener); + g_signal_handlers_disconnect_by_func (opener->item->observable, gtk_menu_tracker_opener_changed, opener); + +- g_action_group_change_action_state (G_ACTION_GROUP (opener->item->observable), +- opener->submenu_action, +- g_variant_new_boolean (FALSE)); +- + gtk_menu_tracker_item_set_submenu_shown (opener->item, FALSE); + +- g_free (opener->submenu_action); ++ closer = g_slice_new (GtkMenuTrackerCloser); ++ closer->action_group = g_object_ref (opener->item->observable); ++ closer->action_name = opener->submenu_action; + + g_slice_free (GtkMenuTrackerOpener, opener); ++ ++ g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, gtk_menu_tracker_closer_free, closer, gtk_menu_tracker_closer_real_free); + } + + static GtkMenuTrackerOpener * +-- +1.9.1 +