summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libnautilus-private/nautilus-global-preferences.c5
-rw-r--r--libnautilus-private/nautilus-global-preferences.h5
-rw-r--r--src/nautilus-application.h2
-rw-r--r--src/nautilus-desktop-canvas-view.c2
-rw-r--r--src/nautilus-files-view.c2
-rw-r--r--src/nautilus-files-view.h8
-rw-r--r--src/nautilus-toolbar-view-menu.xml4
-rw-r--r--src/nautilus-window-slot.c94
-rw-r--r--src/nautilus-window.c47
9 files changed, 92 insertions, 77 deletions
diff --git a/libnautilus-private/nautilus-global-preferences.c b/libnautilus-private/nautilus-global-preferences.c
index 75afe0fd7..15d8f808e 100644
--- a/libnautilus-private/nautilus-global-preferences.c
+++ b/libnautilus-private/nautilus-global-preferences.c
@@ -27,6 +27,7 @@
#include "nautilus-file-utilities.h"
#include "nautilus-file.h"
+#include "src/nautilus-files-view.h"
#include <eel/eel-glib-extensions.h>
#include <eel/eel-gtk-extensions.h>
#include <eel/eel-stock-dialogs.h>
@@ -57,9 +58,9 @@ nautilus_global_preferences_get_default_folder_viewer_preference_as_iid (void)
g_settings_get_enum (nautilus_preferences, NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER);
if (preference_value == NAUTILUS_DEFAULT_FOLDER_VIEWER_LIST_VIEW) {
- viewer_iid = NAUTILUS_LIST_VIEW_IID;
+ viewer_iid = NAUTILUS_LIST_VIEW_ID;
} else {
- viewer_iid = NAUTILUS_CANVAS_VIEW_IID;
+ viewer_iid = NAUTILUS_CANVAS_VIEW_ID;
}
return g_strdup (viewer_iid);
diff --git a/libnautilus-private/nautilus-global-preferences.h b/libnautilus-private/nautilus-global-preferences.h
index ef9dfbfc3..d3204751b 100644
--- a/libnautilus-private/nautilus-global-preferences.h
+++ b/libnautilus-private/nautilus-global-preferences.h
@@ -82,11 +82,6 @@ enum
NAUTILUS_DEFAULT_FOLDER_VIEWER_OTHER
};
-/* These IIDs are used by the preferences code and in nautilus-application.c */
-#define NAUTILUS_CANVAS_VIEW_IID "OAFIID:Nautilus_File_Manager_Canvas_View"
-#define NAUTILUS_LIST_VIEW_IID "OAFIID:Nautilus_File_Manager_List_View"
-
-
/* Icon View */
#define NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL "default-zoom-level"
diff --git a/src/nautilus-application.h b/src/nautilus-application.h
index 8b6ef79eb..179a4f46b 100644
--- a/src/nautilus-application.h
+++ b/src/nautilus-application.h
@@ -29,8 +29,6 @@
#include "nautilus-bookmark-list.h"
#include "nautilus-window.h"
-#define NAUTILUS_DESKTOP_ICON_VIEW_IID "OAFIID:Nautilus_File_Manager_Desktop_Canvas_View"
-
#define NAUTILUS_TYPE_APPLICATION nautilus_application_get_type()
#define NAUTILUS_APPLICATION(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_APPLICATION, NautilusApplication))
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index 3031b253b..8d5844055 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -229,7 +229,7 @@ desktop_canvas_view_property_filter (GdkXEvent *gdk_xevent,
static const char *
real_get_id (NautilusFilesView *view)
{
- return NAUTILUS_DESKTOP_CANVAS_VIEW_ID;
+ return NAUTILUS_DESKTOP_VIEW_ID;
}
static void
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 9c77e658d..995811537 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -8259,7 +8259,7 @@ nautilus_files_view_new (const gchar *id,
view = nautilus_canvas_view_new (slot);
} else if (g_strcmp0 (id, NAUTILUS_LIST_VIEW_ID) == 0) {
view = nautilus_list_view_new (slot);
- } else if (g_strcmp0 (id, NAUTILUS_DESKTOP_CANVAS_VIEW_ID) == 0) {
+ } else if (g_strcmp0 (id, NAUTILUS_DESKTOP_VIEW_ID) == 0) {
view = nautilus_desktop_canvas_view_new (slot);
}
#if ENABLE_EMPTY_VIEW
diff --git a/src/nautilus-files-view.h b/src/nautilus-files-view.h
index a0d5ff1e6..87c2955c9 100644
--- a/src/nautilus-files-view.h
+++ b/src/nautilus-files-view.h
@@ -40,12 +40,12 @@ typedef struct NautilusFilesViewClass NautilusFilesViewClass;
#include "nautilus-window-slot.h"
#if ENABLE_EMPTY_VIEW
-#define NAUTILUS_EMPTY_VIEW_ID "OAFIID:Nautilus_File_Manager_Empty_View"
+#define NAUTILUS_EMPTY_VIEW_ID "empty"
#endif
-#define NAUTILUS_CANVAS_VIEW_ID "OAFIID:Nautilus_File_Manager_Canvas_View"
-#define NAUTILUS_DESKTOP_CANVAS_VIEW_ID "OAFIID:Nautilus_File_Manager_Desktop_Canvas_View"
-#define NAUTILUS_LIST_VIEW_ID "OAFIID:Nautilus_File_Manager_List_View"
+#define NAUTILUS_CANVAS_VIEW_ID "grid"
+#define NAUTILUS_DESKTOP_VIEW_ID "desktop"
+#define NAUTILUS_LIST_VIEW_ID "list"
#define NAUTILUS_TYPE_FILES_VIEW nautilus_files_view_get_type()
#define NAUTILUS_FILES_VIEW(obj)\
diff --git a/src/nautilus-toolbar-view-menu.xml b/src/nautilus-toolbar-view-menu.xml
index db6fbd85c..c4a0d88d8 100644
--- a/src/nautilus-toolbar-view-menu.xml
+++ b/src/nautilus-toolbar-view-menu.xml
@@ -20,7 +20,7 @@
<object class="GtkModelButton" id="grid_button">
<property name="visible">True</property>
<property name="text">Grid</property>
- <property name="action-name">win.view-mode</property>
+ <property name="action-name">slot.files-view-mode</property>
<property name="action-target">'grid'</property>
<property name="iconic">True</property>
<property name="centered">True</property>
@@ -36,7 +36,7 @@
<object class="GtkModelButton" id="list_button">
<property name="visible">True</property>
<property name="text">List</property>
- <property name="action-name">win.view-mode</property>
+ <property name="action-name">slot.files-view-mode</property>
<property name="action-target">'list'</property>
<property name="iconic">True</property>
<property name="centered">True</property>
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 88d0cfe9a..64a118074 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -27,6 +27,7 @@
#include "nautilus-application.h"
#include "nautilus-canvas-view.h"
#include "nautilus-desktop-window.h"
+#include "nautilus-desktop-canvas-view.h"
#include "nautilus-list-view.h"
#include "nautilus-mime-actions.h"
#include "nautilus-places-view.h"
@@ -75,6 +76,9 @@ struct NautilusWindowSlotDetails {
*/
GtkWidget *extra_location_widgets;
+ /* Slot actions */
+ GActionGroup *slot_action_group;
+
/* Current location. */
GFile *location;
gchar *title;
@@ -155,7 +159,7 @@ nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot,
* for the desktop window.
*/
if (NAUTILUS_IS_DESKTOP_WINDOW (window)) {
- view = NAUTILUS_VIEW (nautilus_files_view_new (NAUTILUS_DESKTOP_ICON_VIEW_IID, slot));
+ view = NAUTILUS_VIEW (nautilus_files_view_new (NAUTILUS_DESKTOP_VIEW_ID, slot));
} else if (nautilus_file_is_other_locations (file)) {
view = NAUTILUS_VIEW (nautilus_places_view_new ());
@@ -179,7 +183,7 @@ nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot,
if (slot->details->view_mode_before_search == NULL) {
slot->details->view_mode_before_search = g_strdup (nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (slot->details->content_view)));
}
- view_id = g_strdup (NAUTILUS_LIST_VIEW_IID);
+ view_id = g_strdup (NAUTILUS_LIST_VIEW_ID);
} else {
g_free (slot->details->view_mode_before_search);
slot->details->view_mode_before_search = NULL;
@@ -245,6 +249,7 @@ nautilus_window_slot_sync_actions (NautilusWindowSlot *slot)
NautilusView *view;
GAction *action;
gboolean show_search;
+ GVariant *variant;
view = nautilus_window_slot_get_current_view (slot);
show_search = (slot->details->search_visible || (view && nautilus_view_is_searching (view)));
@@ -263,17 +268,16 @@ nautilus_window_slot_sync_actions (NautilusWindowSlot *slot)
/* By setting the toggle-search action state, NautilusWindow will call nautilus_window_slot_set_search_visible() */
g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (show_search));
- /* View mode */
- action = g_action_map_lookup_action (G_ACTION_MAP (slot->details->window), "view-mode");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
-
- if (nautilus_window_slot_content_view_matches (slot, NAUTILUS_LIST_VIEW_ID)) {
- g_action_change_state (action, g_variant_new_string ("list"));
- } else if (nautilus_window_slot_content_view_matches (slot, NAUTILUS_CANVAS_VIEW_ID)) {
- g_action_change_state (action, g_variant_new_string ("grid"));
- } else {
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
- }
+ /* Files view mode */
+ action = g_action_map_lookup_action (G_ACTION_MAP (slot->details->slot_action_group), "files-view-mode");
+ if (NAUTILUS_IS_FILES_VIEW (nautilus_window_slot_get_current_view (slot)) &&
+ !NAUTILUS_IS_DESKTOP_CANVAS_VIEW (nautilus_window_slot_get_current_view (slot))) {
+ variant = g_variant_new_string (nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (nautilus_window_slot_get_current_view (slot))));
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
+ g_action_change_state (action, variant);
+ } else {
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+ }
}
static void
@@ -462,6 +466,8 @@ real_active (NautilusWindowSlot *slot)
nautilus_window_sync_title (window, slot);
nautilus_window_sync_location_widgets (window);
nautilus_window_slot_sync_actions (slot);
+
+ gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", slot->details->slot_action_group);
}
static void
@@ -471,6 +477,8 @@ real_inactive (NautilusWindowSlot *slot)
window = nautilus_window_slot_get_window (slot);
g_assert (slot == nautilus_window_get_active_slot (window));
+
+ gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", NULL);
}
static void
@@ -579,12 +587,72 @@ nautilus_window_slot_constructed (GObject *object)
slot->details->title = g_strdup (_("Loading…"));
}
+static void
+action_files_view_mode (GSimpleAction *action,
+ GVariant *value,
+ gpointer user_data)
+{
+ const gchar *name;
+ NautilusWindowSlot *slot;
+
+ name = g_variant_get_string (value, NULL);
+ slot = NAUTILUS_WINDOW_SLOT (user_data);
+
+ if (!NAUTILUS_IS_FILES_VIEW (nautilus_window_slot_get_current_view (slot)))
+ return;
+
+ nautilus_window_slot_set_content_view (slot, name);
+ if (g_strcmp0 (name, "list") == 0) {
+ /* If this change is caused because of the automatic list view
+ * switch for search, don't set as default list view */
+ if (!(nautilus_view_is_searching (nautilus_window_slot_get_current_view (slot)) &&
+ g_settings_get_boolean (nautilus_preferences, NAUTILUS_PREFERENCES_LIST_VIEW_ON_SEARCH))) {
+ g_settings_set_enum (nautilus_preferences,
+ NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER,
+ NAUTILUS_DEFAULT_FOLDER_VIEWER_LIST_VIEW);
+ }
+ } else if (g_strcmp0 (name, "grid") == 0) {
+ /* If the user manually changed the view mode to grid, disable the automatic
+ * switch to list view on search */
+ if (nautilus_view_is_searching (nautilus_window_slot_get_current_view (slot))) {
+ g_settings_set_boolean (nautilus_preferences,
+ NAUTILUS_PREFERENCES_LIST_VIEW_ON_SEARCH,
+ FALSE);
+ }
+ g_settings_set_enum (nautilus_preferences,
+ NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER,
+ NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW);
+ } else {
+ g_assert_not_reached ();
+ }
+
+ g_simple_action_set_state (action, value);
+}
+
+const GActionEntry slot_entries[] = {
+ { "files-view-mode", NULL, "s", "''", action_files_view_mode },
+};
static void
nautilus_window_slot_init (NautilusWindowSlot *slot)
{
+ GApplication *app;
+
+ app = g_application_get_default ();
+
slot->details = G_TYPE_INSTANCE_GET_PRIVATE
(slot, NAUTILUS_TYPE_WINDOW_SLOT, NautilusWindowSlotDetails);
+
+ slot->details->slot_action_group = G_ACTION_GROUP (g_simple_action_group_new ());
+ g_action_map_add_action_entries (G_ACTION_MAP (slot->details->slot_action_group),
+ slot_entries,
+ G_N_ELEMENTS (slot_entries),
+ slot);
+ gtk_widget_insert_action_group (GTK_WIDGET (slot),
+ "slot",
+ G_ACTION_GROUP (slot->details->slot_action_group));
+ nautilus_application_add_accelerator (app, "slot.files-view-mode('list')", "<control>1");
+ nautilus_application_add_accelerator (app, "slot.files-view-mode('grid')", "<control>2");
}
#define DEBUG_FLAG NAUTILUS_DEBUG_WINDOW
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index c3a50bc3a..0aa0a2fb8 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -435,50 +435,6 @@ action_toggle_state_action_button (GSimpleAction *action,
}
static void
-action_view_mode (GSimpleAction *action,
- GVariant *value,
- gpointer user_data)
-{
- const gchar *name;
- NautilusWindowSlot *slot;
- GFile *location;
-
- name = g_variant_get_string (value, NULL);
- slot = nautilus_window_get_active_slot (NAUTILUS_WINDOW (user_data));
-
- if (g_strcmp0 (name, "list") == 0) {
- nautilus_window_slot_set_content_view (slot, NAUTILUS_LIST_VIEW_ID);
- /* If this change is caused because of the automatic list view
- * switch for search, don't set as default list view */
- location = nautilus_window_slot_get_location (slot);
- if (!(nautilus_file_is_in_search (nautilus_file_get (location)) &&
- g_settings_get_boolean (nautilus_preferences, NAUTILUS_PREFERENCES_LIST_VIEW_ON_SEARCH))) {;
- g_settings_set_enum (nautilus_preferences,
- NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER,
- NAUTILUS_DEFAULT_FOLDER_VIEWER_LIST_VIEW);
- }
- } else if (g_strcmp0 (name, "grid") == 0) {
- nautilus_window_slot_set_content_view (slot, NAUTILUS_CANVAS_VIEW_ID);
-
- /* If the user manually changed the view mode to grid, disable the automatic
- * switch to list view on search */
- location = nautilus_window_slot_get_location (slot);
- if (nautilus_file_is_in_search (nautilus_file_get (location))) {
- g_settings_set_boolean (nautilus_preferences,
- NAUTILUS_PREFERENCES_LIST_VIEW_ON_SEARCH,
- FALSE);
- }
- g_settings_set_enum (nautilus_preferences,
- NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER,
- NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW);
- } else {
- g_assert_not_reached ();
- }
-
- g_simple_action_set_state (action, value);
-}
-
-static void
undo_manager_changed (NautilusWindow *window)
{
NautilusToolbar *toolbar;
@@ -1937,7 +1893,6 @@ const GActionEntry win_entries[] = {
{ "toggle-search", NULL, NULL, "false", action_toggle_search },
{ "undo", action_undo },
{ "redo", action_redo },
- { "view-mode", NULL, "s", "''", action_view_mode },
/* Only accesible by shorcuts */
{ "close-current-view", action_close_current_view },
{ "go-home", action_go_home },
@@ -1978,8 +1933,6 @@ nautilus_window_initialize_actions (NautilusWindow *window)
nautilus_application_add_accelerator (app, "win.enter-location", "<control>l");
nautilus_application_add_accelerator (app, "win.new-tab", "<control>t");
nautilus_application_add_accelerator (app, "win.toggle-search", "<control>f");
- nautilus_application_add_accelerator (app, "win.view-mode('list')", "<control>1");
- nautilus_application_add_accelerator (app, "win.view-mode('grid')", "<control>2");
nautilus_application_add_accelerator (app, "win.close-current-view", "<control>w");
/* Special case reload, since users are used to use two shortcuts instead of one */