diff --git a/src/gtk/nautilusgtkplacessidebar.c b/src/gtk/nautilusgtkplacessidebar.c index 128054ddaecdfde02d8b883f81de117209f482c0..f270588bbe0d4cfa10aee3bccb1b8ff4a6d771b9 100644 --- a/src/gtk/nautilusgtkplacessidebar.c +++ b/src/gtk/nautilusgtkplacessidebar.c @@ -2146,6 +2146,9 @@ open_row (NautilusGtkSidebarRow *row, GVolume *volume; NautilusGtkPlacesPlaceType place_type; NautilusGtkPlacesSidebar *sidebar; + g_autofree gchar *old_uri = NULL; + gboolean open_new_slot = open_flags & NAUTILUS_GTK_PLACES_OPEN_NEW_TAB + || open_flags & NAUTILUS_GTK_PLACES_OPEN_NEW_WINDOW; g_object_get (row, "sidebar", &sidebar, @@ -2155,7 +2158,13 @@ open_row (NautilusGtkSidebarRow *row, "volume", &volume, NULL); - if (place_type == NAUTILUS_GTK_PLACES_OTHER_LOCATIONS) + old_uri = g_file_get_uri (sidebar->current_location); + + if ((g_strcmp0 (old_uri, uri) == 0) && !open_new_slot) + { + /* Location already open. Do nothing. */ + } + else if (place_type == NAUTILUS_GTK_PLACES_OTHER_LOCATIONS) { emit_show_other_locations_with_flags (sidebar, open_flags); }