1 Adjusted to build against 1.6.3 by removing the is_navigation boolean.
3 From 4f1e756e08e61840eb9a52de4debee30006ea31e Mon Sep 17 00:00:00 2001
4 From: Stefano Karapetsas <stefano@karapetsas.com>
5 Date: Tue, 18 Mar 2014 18:16:45 +0100
6 Subject: [PATCH] Possible solution for x-caja-desktop issue
9 src/caja-application.c | 14 +++++++++++---
10 src/caja-window-manage-views.c | 18 +++++++++++++-----
11 2 files changed, 24 insertions(+), 8 deletions(-)
13 diff --git a/src/caja-application.c b/src/caja-application.c
14 index 3f4282c..47c86c8 100644
15 --- a/src/caja-application.c
16 +++ b/src/caja-application.c
17 @@ -961,6 +961,15 @@ static void drive_listen_for_eject_button (GDrive *drive,
22 +desktop_changed_callback_connect (CajaApplication *application)
24 + g_signal_connect_swapped (caja_preferences, "changed::" CAJA_PREFERENCES_DESKTOP_IS_HOME_DIR,
25 + G_CALLBACK(desktop_location_changed_callback),
26 + G_OBJECT (application));
31 caja_application_startup (CajaApplication *application,
33 @@ -1029,9 +1038,8 @@ static void drive_listen_for_eject_button (GDrive *drive,
35 /* Monitor the preference to have the desktop */
36 /* point to the Unix home folder */
37 - g_signal_connect_swapped (caja_preferences, "changed::" CAJA_PREFERENCES_DESKTOP_IS_HOME_DIR,
38 - G_CALLBACK(desktop_location_changed_callback),
39 - G_OBJECT (application));
40 + g_timeout_add_seconds (30, (GSourceFunc) desktop_changed_callback_connect, application);
42 /* Create the other windows. */
43 if (urls != NULL || !no_default_window)
45 diff --git a/src/caja-window-manage-views.c b/src/caja-window-manage-views.c
46 index c7918e6..616e85b 100644
47 --- a/src/caja-window-manage-views.c
48 +++ b/src/caja-window-manage-views.c
50 #include <eel/eel-gtk-macros.h>
51 #include <eel/eel-stock-dialogs.h>
52 #include <eel/eel-string.h>
53 +#include <eel/eel-vfs-extensions.h>
56 #include <glib/gi18n.h>
57 @@ -527,8 +528,9 @@ static void load_new_location (CajaWindowSlot *s
58 char *old_uri, *new_uri;
59 int new_slot_position;
61 - gboolean target_navigation = FALSE, target_same = FALSE;
62 - gboolean is_desktop;
63 + gboolean target_navigation = FALSE;
64 + gboolean target_same = FALSE;
65 + gboolean is_desktop = FALSE;
67 window = slot->pane->window;
69 @@ -567,7 +570,12 @@ static void load_new_location (CajaWindowSlot *s
70 * otherwise it's the same window.
73 - target_navigation = TRUE;
74 + new_uri = g_file_get_uri (location);
75 + if (g_str_has_prefix (new_uri, EEL_DESKTOP_URI))
78 + target_navigation = TRUE;
83 @@ -676,7 +684,7 @@ static void load_new_location (CajaWindowSlot *s
87 - if ((target_window == window && target_slot == slot &&
88 + if (!(is_desktop && target_same) && (target_window == window && target_slot == slot &&
89 old_location && g_file_equal (old_location, location))) {
91 if (callback != NULL) {
92 @@ -688,7 +696,7 @@ static void load_new_location (CajaWindowSlot *s
95 begin_location_change (target_slot, location, old_location, new_selection,
96 - CAJA_LOCATION_CHANGE_STANDARD, 0, NULL, callback, user_data);
97 + (is_desktop && target_same) ? CAJA_LOCATION_CHANGE_RELOAD : CAJA_LOCATION_CHANGE_STANDARD, 0, NULL, callback, user_data);
99 /* Additionally, load this in all slots that have no location, this means
100 we load both panes in e.g. a newly opened dual pane window. */