[nautilus] NautilusWindowSlot: emit a location change only after setting the new one
- From: Marco Trevisan <marcotrevi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] NautilusWindowSlot: emit a location change only after setting the new one
- Date: Mon, 4 Mar 2013 09:53:55 +0000 (UTC)
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]