[nautilus] NautilusWindowSlot: emit a location change only after setting the new one



commit 980512cee65e21e79c53a7181a0f68ec921111cc
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Sat Mar 2 21:17:31 2013 +0100

    NautilusWindowSlot: emit a location change only after setting the new one
    
    Otherwise: nautilus_window_slot_get_location_uri() != new_location
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694266

 src/nautilus-window-slot.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index a8d50ed..2d0d1d8 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -136,6 +136,7 @@ static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
 static void nautilus_window_slot_force_reload (NautilusWindowSlot *slot);
 static void location_has_really_changed (NautilusWindowSlot *slot);
 static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot);
+static void nautilus_window_slot_emit_location_change (NautilusWindowSlot *slot, GFile *from, GFile *to);
 
 static void
 nautilus_window_slot_sync_search_widgets (NautilusWindowSlot *slot)
@@ -968,20 +969,26 @@ static void
 nautilus_window_slot_set_location (NautilusWindowSlot *slot,
                                   GFile *location)
 {
+       GFile *old_location;
+
        if (slot->details->location &&
            g_file_equal (location, slot->details->location)) {
                return;
        }
 
-       if (slot->details->location) {
-               g_object_unref (slot->details->location);
-       }
+       old_location = slot->details->location;
        slot->details->location = g_object_ref (location);
 
        if (slot == nautilus_window_get_active_slot (slot->details->window)) {
                nautilus_window_sync_location_widgets (slot->details->window);
                nautilus_window_slot_update_title (slot);
        }
+
+       nautilus_window_slot_emit_location_change (slot, old_location, location);
+
+       if (old_location) {
+               g_object_unref (old_location);
+       }
 }
 
 static void
@@ -2135,7 +2142,6 @@ nautilus_window_slot_update_for_new_location (NautilusWindowSlot *slot)
        slot->details->viewed_file_in_trash = nautilus_file_is_in_trash (file);
         nautilus_file_unref (file);
 
-       nautilus_window_slot_emit_location_change (slot, old_location, new_location);
        nautilus_window_slot_set_location (slot, new_location);
 
        if (slot == nautilus_window_get_active_slot (window)) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]