diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2015-01-25 18:06:20 +0000 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2015-01-26 11:19:22 +0000 |
commit | 44ce04113c5b1a4ccd6d78849f511d2cf1f95041 (patch) | |
tree | 6f9ee78ae80cbff82aa9f400a8bad260cf5c32a1 | |
parent | be0f488a2d2525deab363ebf98ce548395e60d90 (diff) | |
download | nautilus-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.c | 110 | ||||
-rw-r--r-- | src/nautilus-window.c | 78 |
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 |