summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-base/nautilus/files/nautilus-3.14.2-active-slot.patch')
-rw-r--r--gnome-base/nautilus/files/nautilus-3.14.2-active-slot.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/gnome-base/nautilus/files/nautilus-3.14.2-active-slot.patch b/gnome-base/nautilus/files/nautilus-3.14.2-active-slot.patch
new file mode 100644
index 000000000000..b1941996021d
--- /dev/null
+++ b/gnome-base/nautilus/files/nautilus-3.14.2-active-slot.patch
@@ -0,0 +1,51 @@
+From c9f259ca8f5541ac879320b5d168ae7b4bc46d86 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Nelson=20Ben=C3=ADtez=20Le=C3=B3n?=
+ <nbenitezl+gnome@gmail.com>
+Date: Sat, 27 Dec 2014 00:27:36 +0500
+Subject: nautilus-window: make sure active slot is closed last
+
+When destroying window and closing all slots, the closing
+of the active slot will trigger activation of next free slot,
+we don't want to be activating slots as part of
+'closing all slots' logic.
+
+Fixes bug 741952
+
+diff --git a/src/nautilus-window.c b/src/nautilus-window.c
+index 124fc57..38dea35 100644
+--- a/src/nautilus-window.c
++++ b/src/nautilus-window.c
+@@ -1531,6 +1531,18 @@ nautilus_window_get_property (GObject *object,
+ }
+ }
+
++static gint
++sort_slots_active_last (NautilusWindowSlot *a, NautilusWindowSlot *b, NautilusWindow *window)
++{
++ if (window->details->active_slot == a) {
++ return 1;
++ }
++ if (window->details->active_slot == b) {
++ return -1;
++ }
++ return 0;
++}
++
+ static void
+ destroy_slots_foreach (gpointer data,
+ gpointer user_data)
+@@ -1557,6 +1569,11 @@ nautilus_window_destroy (GtkWidget *object)
+
+ /* close all slots safely */
+ slots_copy = g_list_copy (window->details->slots);
++ if (window->details->active_slot != NULL) {
++ /* Make sure active slot is last one to be closed, to avoid default activation
++ * of others slots when closing the active one, see bug #741952 */
++ slots_copy = g_list_sort_with_data (slots_copy, (GCompareFunc) sort_slots_active_last, window);
++ }
+ g_list_foreach (slots_copy, (GFunc) destroy_slots_foreach, window);
+ g_list_free (slots_copy);
+
+--
+cgit v0.10.1
+