summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2015-01-25 18:06:20 +0000
committerCosimo Cecchi <cosimoc@gnome.org>2015-01-26 11:19:22 +0000
commit44ce04113c5b1a4ccd6d78849f511d2cf1f95041 (patch)
tree6f9ee78ae80cbff82aa9f400a8bad260cf5c32a1
parentbe0f488a2d2525deab363ebf98ce548395e60d90 (diff)
downloadnautilus-44ce04113c5b1a4ccd6d78849f511d2cf1f95041.tar.gz
window: move undo actions to the window action group
They are shared between different views - and windows actually. So it makes more sense for them to live here for now.
-rw-r--r--src/nautilus-view.c110
-rw-r--r--src/nautilus-window.c78
2 files changed, 79 insertions, 109 deletions
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index d689b5249..d1f1778c6 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -86,7 +86,6 @@
#include <libnautilus-private/nautilus-ui-utilities.h>
#include <libnautilus-private/nautilus-signaller.h>
#include <libnautilus-private/nautilus-icon-names.h>
-#include <libnautilus-private/nautilus-file-undo-manager.h>
#define GNOME_DESKTOP_USE_UNSTABLE_API
#include <gdesktop-enums.h>
@@ -1801,36 +1800,6 @@ action_show_hidden_files (GSimpleAction *action,
}
static void
-action_undo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- GtkWidget *toplevel;
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
- nautilus_file_undo_manager_undo (GTK_WINDOW (toplevel));
-}
-
-static void
-action_redo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- GtkWidget *toplevel;
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
- nautilus_file_undo_manager_redo (GTK_WINDOW (toplevel));
-}
-
-static void
action_zoom_in (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -2259,17 +2228,6 @@ nautilus_view_get_selection_count (NautilusView *view)
return len;
}
-static void
-undo_manager_changed (NautilusFileUndoManager* manager,
- NautilusView *view)
-{
- if (!view->details->active) {
- return;
- }
-
- nautilus_view_update_toolbar_menus (view);
-}
-
void
nautilus_view_set_selection (NautilusView *nautilus_view,
GList *selection)
@@ -5585,8 +5543,6 @@ const GActionEntry view_entries[] = {
{ "zoom-in", action_zoom_in },
{ "zoom-out", action_zoom_out },
{ "zoom-default", action_zoom_default },
- { "undo", action_undo },
- { "redo", action_redo },
{ "show-hidden-files", NULL, NULL, "true", action_show_hidden_files },
/* Background menu */
{ "new-folder", action_new_folder },
@@ -5868,10 +5824,6 @@ real_update_actions_state (NautilusView *view)
gboolean show_stop;
gboolean show_detect_media;
GDriveStartStopType start_stop_type;
- NautilusFileUndoInfo *info;
- NautilusFileUndoManagerState undo_state;
- gboolean undo_active, redo_active;
- gboolean is_undo;
view_action_group = view->details->view_action_group;
@@ -6122,24 +6074,6 @@ real_update_actions_state (NautilusView *view)
!nautilus_view_is_empty (view));
/* Toolbar menu actions */
- /* Undo and Redo */
- info = nautilus_file_undo_manager_get_action ();
- undo_state = nautilus_file_undo_manager_get_state ();
- undo_active = redo_active = FALSE;
- if (info != NULL &&
- (undo_state > NAUTILUS_FILE_UNDO_MANAGER_STATE_NONE)) {
- is_undo = (undo_state == NAUTILUS_FILE_UNDO_MANAGER_STATE_UNDO);
- undo_active = is_undo;
- redo_active = !is_undo;
- }
-
- action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
- "undo");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), undo_active);
- action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
- "redo");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), redo_active);
-
g_action_group_change_action_state (view_action_group,
"show-hidden-files",
g_variant_new_boolean (view->details->show_hidden_files));
@@ -6413,50 +6347,13 @@ real_update_toolbar_menus (NautilusView *view)
{
NautilusToolbar *toolbar;
NautilusWindow *window;
- NautilusFileUndoInfo *info;
- NautilusFileUndoManagerState undo_state;
- gboolean undo_active, redo_active;
- gchar *undo_label, *undo_description, *redo_label, *redo_description;
- gboolean is_undo;
- GMenu* undo_section;
-
- undo_label = undo_description = redo_label = redo_description = NULL;
- toolbar = NAUTILUS_TOOLBAR (nautilus_window_get_toolbar (nautilus_view_get_window (view)));
window = nautilus_view_get_window (view);
+ toolbar = NAUTILUS_TOOLBAR (nautilus_window_get_toolbar (window));
nautilus_toolbar_reset_menus (toolbar);
nautilus_window_reset_menus (window);
- /* Undo and Redo */
- info = nautilus_file_undo_manager_get_action ();
- undo_state = nautilus_file_undo_manager_get_state ();
- undo_active = redo_active = FALSE;
- if (info != NULL &&
- (undo_state > NAUTILUS_FILE_UNDO_MANAGER_STATE_NONE)) {
- is_undo = (undo_state == NAUTILUS_FILE_UNDO_MANAGER_STATE_UNDO);
- undo_active = is_undo;
- redo_active = !is_undo;
- nautilus_file_undo_info_get_strings (info,
- &undo_label, &undo_description,
- &redo_label, &redo_description);
- }
-
- undo_section = g_menu_new ();
- undo_label = undo_active ? undo_label : g_strdup (_("Undo"));
- redo_label = redo_active ? redo_label : g_strdup (_("Redo"));
- g_menu_append (undo_section, undo_label, "view.undo");
- g_menu_append (undo_section, redo_label, "view.redo");
- nautilus_gmenu_replace_section (nautilus_toolbar_get_action_menu (toolbar),
- "undo-redo-section",
- G_MENU_MODEL (undo_section));
-
nautilus_view_update_actions_state (view);
-
- g_object_unref (undo_section);
- g_free (undo_label);
- g_free (undo_description);
- g_free (redo_label);
- g_free (redo_description);
}
/* Convenience function to reset the menus owned by the but that are managed on
@@ -7587,9 +7484,6 @@ nautilus_view_init (NautilusView *view)
"changed::" NAUTILUS_PREFERENCES_LOCKDOWN_COMMAND_LINE,
G_CALLBACK (schedule_update_context_menus), view);
- g_signal_connect_object (nautilus_file_undo_manager_get (), "undo-changed",
- G_CALLBACK (undo_manager_changed), view, 0);
-
/* Accessibility */
atk_object = gtk_widget_get_accessible (GTK_WIDGET (view));
atk_object_set_name (atk_object, _("Content View"));
@@ -7609,8 +7503,6 @@ nautilus_view_init (NautilusView *view)
/* Toolbar menu */
nautilus_application_add_accelerator (app, "view.zoom-in", "<control>plus");
nautilus_application_add_accelerator (app, "view.zoom-out", "<control>minus");
- nautilus_application_add_accelerator (app, "view.undo", "<control>z");
- nautilus_application_add_accelerator (app, "view.redo", "<shift><control>z");
nautilus_application_add_accelerator (app, "view.show-hidden-files", "<control>h");
/* Background menu */
nautilus_application_add_accelerator (app, "view.select-all", "<control>a");
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 2e7f3622e..a80b0c5dc 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -58,6 +58,7 @@
#include <libnautilus-private/nautilus-file-utilities.h>
#include <libnautilus-private/nautilus-file-attributes.h>
#include <libnautilus-private/nautilus-file-operations.h>
+#include <libnautilus-private/nautilus-file-undo-manager.h>
#include <libnautilus-private/nautilus-global-preferences.h>
#include <libnautilus-private/nautilus-metadata.h>
#include <libnautilus-private/nautilus-profile.h>
@@ -354,6 +355,26 @@ action_prompt_for_location_home (GSimpleAction *action,
}
static void
+action_redo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusWindow *window = user_data;
+
+ nautilus_file_undo_manager_redo (GTK_WINDOW (window));
+}
+
+static void
+action_undo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusWindow *window = user_data;
+
+ nautilus_file_undo_manager_undo (GTK_WINDOW (window));
+}
+
+static void
action_toggle_state_action_button (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -388,6 +409,55 @@ action_view_mode (GSimpleAction *action,
g_simple_action_set_state (action, value);
}
+static void
+undo_manager_changed (NautilusWindow *window)
+{
+ NautilusToolbar *toolbar;
+ NautilusFileUndoInfo *info;
+ NautilusFileUndoManagerState undo_state;
+ gboolean undo_active, redo_active;
+ gchar *undo_label, *undo_description, *redo_label, *redo_description;
+ gboolean is_undo;
+ GMenu* undo_section;
+ GAction *action;
+
+ toolbar = NAUTILUS_TOOLBAR (window->details->toolbar);
+ undo_label = undo_description = redo_label = redo_description = NULL;
+
+ info = nautilus_file_undo_manager_get_action ();
+ undo_state = nautilus_file_undo_manager_get_state ();
+ undo_active = redo_active = FALSE;
+ if (info != NULL &&
+ (undo_state > NAUTILUS_FILE_UNDO_MANAGER_STATE_NONE)) {
+ is_undo = (undo_state == NAUTILUS_FILE_UNDO_MANAGER_STATE_UNDO);
+ undo_active = is_undo;
+ redo_active = !is_undo;
+ nautilus_file_undo_info_get_strings (info,
+ &undo_label, &undo_description,
+ &redo_label, &redo_description);
+ }
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (window), "undo");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), undo_active);
+ action = g_action_map_lookup_action (G_ACTION_MAP (window), "redo");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), redo_active);
+
+ undo_section = g_menu_new ();
+ undo_label = undo_active ? undo_label : g_strdup (_("Undo"));
+ redo_label = redo_active ? redo_label : g_strdup (_("Redo"));
+ g_menu_append (undo_section, undo_label, "win.undo");
+ g_menu_append (undo_section, redo_label, "win.redo");
+ nautilus_gmenu_replace_section (nautilus_toolbar_get_action_menu (toolbar),
+ "undo-redo-section",
+ G_MENU_MODEL (undo_section));
+
+ g_object_unref (undo_section);
+ g_free (undo_label);
+ g_free (undo_description);
+ g_free (redo_label);
+ g_free (redo_description);
+}
+
const GActionEntry win_entries[] = {
{ "back", action_back },
{ "forward", action_forward },
@@ -399,6 +469,8 @@ const GActionEntry win_entries[] = {
{ "enter-location", action_enter_location },
{ "bookmark-current-location", action_bookmark_current_location },
{ "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 },
@@ -436,6 +508,8 @@ nautilus_window_initialize_actions (NautilusWindow *window)
nautilus_application_add_accelerator (app, "win.view-mode('grid')", "<control>2");
nautilus_application_add_accelerator (app, "win.close-current-view", "<control>w");
nautilus_application_add_accelerator (app, "win.reload", "<control>r");
+ nautilus_application_add_accelerator (app, "win.undo", "<control>z");
+ nautilus_application_add_accelerator (app, "win.redo", "<shift><control>z");
/* Only accesible by shorcuts */
nautilus_application_add_accelerator (app, "win.bookmark-current-location", "<control>d");
nautilus_application_add_accelerator (app, "win.up", "<alt>Up");
@@ -461,6 +535,10 @@ nautilus_window_initialize_actions (NautilusWindow *window)
nautilus_window_show_sidebar (window);
g_variant_unref (state);
+
+ g_signal_connect_object (nautilus_file_undo_manager_get (), "undo-changed",
+ G_CALLBACK (undo_manager_changed), window, G_CONNECT_SWAPPED);
+ undo_manager_changed (window);
}
void