summaryrefslogtreecommitdiff
path: root/community/caja/4f1e756e08e61840eb9a52de4debee30006ea31e.diff
diff options
context:
space:
mode:
Diffstat (limited to 'community/caja/4f1e756e08e61840eb9a52de4debee30006ea31e.diff')
-rw-r--r--community/caja/4f1e756e08e61840eb9a52de4debee30006ea31e.diff89
1 files changed, 89 insertions, 0 deletions
diff --git a/community/caja/4f1e756e08e61840eb9a52de4debee30006ea31e.diff b/community/caja/4f1e756e08e61840eb9a52de4debee30006ea31e.diff
new file mode 100644
index 000000000..0ab9e1feb
--- /dev/null
+++ b/community/caja/4f1e756e08e61840eb9a52de4debee30006ea31e.diff
@@ -0,0 +1,89 @@
+diff --git a/src/caja-application.c b/src/caja-application.c
+index 3f4282c..47c86c8 100644
+--- a/src/caja-application.c
++++ b/src/caja-application.c
+@@ -961,6 +961,15 @@ queue_accel_map_save_callback (GtkAccelMap *object, gchar *accel_path,
+ }
+ }
+
++static gboolean
++desktop_changed_callback_connect (CajaApplication *application)
++{
++ g_signal_connect_swapped (caja_preferences, "changed::" CAJA_PREFERENCES_DESKTOP_IS_HOME_DIR,
++ G_CALLBACK(desktop_location_changed_callback),
++ G_OBJECT (application));
++ return FALSE;
++}
++
+ void
+ caja_application_startup (CajaApplication *application,
+ gboolean kill_shell,
+@@ -1029,9 +1038,8 @@ caja_application_startup (CajaApplication *application,
+
+ /* Monitor the preference to have the desktop */
+ /* point to the Unix home folder */
+- g_signal_connect_swapped (caja_preferences, "changed::" CAJA_PREFERENCES_DESKTOP_IS_HOME_DIR,
+- G_CALLBACK(desktop_location_changed_callback),
+- G_OBJECT (application));
++ g_timeout_add_seconds (30, (GSourceFunc) desktop_changed_callback_connect, application);
++
+ /* Create the other windows. */
+ if (urls != NULL || !no_default_window)
+ {
+diff --git a/src/caja-window-manage-views.c b/src/caja-window-manage-views.c
+index c7918e6..616e85b 100644
+--- a/src/caja-window-manage-views.c
++++ b/src/caja-window-manage-views.c
+@@ -49,6 +49,7 @@
+ #include <eel/eel-gtk-macros.h>
+ #include <eel/eel-stock-dialogs.h>
+ #include <eel/eel-string.h>
++#include <eel/eel-vfs-extensions.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdkx.h>
+ #include <glib/gi18n.h>
+@@ -527,8 +528,10 @@ caja_window_slot_open_location_full (CajaWindowSlot *slot,
+ char *old_uri, *new_uri;
+ int new_slot_position;
+ GList *l;
+- gboolean target_navigation = FALSE, target_same = FALSE;
+- gboolean is_desktop, is_navigation;
++ gboolean target_navigation = FALSE;
++ gboolean target_same = FALSE;
++ gboolean is_desktop = FALSE;
++ gboolean is_navigation = FALSE;
+
+ window = slot->pane->window;
+
+@@ -567,7 +570,12 @@ caja_window_slot_open_location_full (CajaWindowSlot *slot,
+ * otherwise it's the same window.
+ */
+ if (is_desktop) {
+- target_navigation = TRUE;
++ new_uri = g_file_get_uri (location);
++ if (g_str_has_prefix (new_uri, EEL_DESKTOP_URI))
++ target_same = TRUE;
++ else
++ target_navigation = TRUE;
++ g_free (new_uri);
+ } else {
+ target_same = TRUE;
+ }
+@@ -676,7 +684,7 @@ caja_window_slot_open_location_full (CajaWindowSlot *slot,
+ }
+ }
+
+- if ((target_window == window && target_slot == slot &&
++ if (!(is_desktop && target_same) && (target_window == window && target_slot == slot &&
+ old_location && g_file_equal (old_location, location))) {
+
+ if (callback != NULL) {
+@@ -688,7 +696,7 @@ caja_window_slot_open_location_full (CajaWindowSlot *slot,
+ }
+
+ begin_location_change (target_slot, location, old_location, new_selection,
+- CAJA_LOCATION_CHANGE_STANDARD, 0, NULL, callback, user_data);
++ (is_desktop && target_same) ? CAJA_LOCATION_CHANGE_RELOAD : CAJA_LOCATION_CHANGE_STANDARD, 0, NULL, callback, user_data);
+
+ /* Additionally, load this in all slots that have no location, this means
+ we load both panes in e.g. a newly opened dual pane window. */