diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2015-01-20 10:36:36 -0800 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2015-01-24 02:06:03 +0100 |
commit | dfb27bf84c1a5ff921388d787f081637e17e7668 (patch) | |
tree | fa890951b013829e4cbf5ce0e75829d1d87bcc1d | |
parent | 5951fadbefafd177985c824a0af7d37e5ac052c4 (diff) | |
download | nautilus-dfb27bf84c1a5ff921388d787f081637e17e7668.tar.gz |
view: cleanup zoom-to-level actions
Instead of putting it in the superclass, have the subclasses implement
it individually.
-rw-r--r-- | src/nautilus-canvas-view.c | 49 | ||||
-rw-r--r-- | src/nautilus-list-view.c | 47 | ||||
-rw-r--r-- | src/nautilus-view.c | 54 | ||||
-rw-r--r-- | src/nautilus-view.h | 5 |
4 files changed, 55 insertions, 100 deletions
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c index c56f0210a..92701d376 100644 --- a/src/nautilus-canvas-view.c +++ b/src/nautilus-canvas-view.c @@ -149,8 +149,6 @@ static const SortCriterion sort_criteria[] = { static void nautilus_canvas_view_set_directory_sort_by (NautilusCanvasView *canvas_view, NautilusFile *file, const char *sort_by); -static void nautilus_canvas_view_set_zoom_level (NautilusCanvasView *view, - NautilusCanvasZoomLevel new_level); static void nautilus_canvas_view_update_click_mode (NautilusCanvasView *canvas_view); static gboolean nautilus_canvas_view_supports_scaling (NautilusCanvasView *canvas_view); static void nautilus_canvas_view_reveal_selection (NautilusView *view); @@ -685,8 +683,6 @@ get_sort_criterion_by_sort_type (NautilusFileSortType sort_type) return &sort_criteria[0]; } -#define DEFAULT_ZOOM_LEVEL(canvas_view) default_zoom_level - static NautilusCanvasZoomLevel get_default_zoom_level (NautilusCanvasView *canvas_view) { @@ -695,7 +691,7 @@ get_default_zoom_level (NautilusCanvasView *canvas_view) default_zoom_level = g_settings_get_enum (nautilus_icon_view_preferences, NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL); - return CLAMP (DEFAULT_ZOOM_LEVEL(canvas_view), NAUTILUS_CANVAS_ZOOM_LEVEL_SMALL, NAUTILUS_CANVAS_ZOOM_LEVEL_LARGE); + return CLAMP (default_zoom_level, NAUTILUS_CANVAS_ZOOM_LEVEL_SMALL, NAUTILUS_CANVAS_ZOOM_LEVEL_LARGE); } static void @@ -791,35 +787,24 @@ nautilus_canvas_view_get_zoom_level (NautilusView *view) } static void -nautilus_canvas_view_set_zoom_level (NautilusCanvasView *view, - NautilusCanvasZoomLevel new_level) +nautilus_canvas_view_zoom_to_level (NautilusView *view, + gint new_level) { + NautilusCanvasView *canvas_view; NautilusCanvasContainer *canvas_container; g_return_if_fail (NAUTILUS_IS_CANVAS_VIEW (view)); g_return_if_fail (new_level >= NAUTILUS_CANVAS_ZOOM_LEVEL_SMALL && new_level <= NAUTILUS_CANVAS_ZOOM_LEVEL_LARGE); - canvas_container = get_canvas_container (view); + + canvas_view = NAUTILUS_CANVAS_VIEW (view); + canvas_container = get_canvas_container (canvas_view); if (nautilus_canvas_container_get_zoom_level (canvas_container) == new_level) return; nautilus_canvas_container_set_zoom_level (canvas_container, new_level); -} - -static void -nautilus_canvas_view_zoom_to_level (NautilusView *view, - gint zoom_level) -{ - NautilusCanvasView *canvas_view; - - g_assert (NAUTILUS_IS_CANVAS_VIEW (view)); - - canvas_view = NAUTILUS_CANVAS_VIEW (view); - nautilus_canvas_view_set_zoom_level (canvas_view, zoom_level); - - /* Chain up to the parent to update menus */ - NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->zoom_to_level (view, zoom_level); + nautilus_view_update_toolbar_menus (view); } static void @@ -964,6 +949,21 @@ action_sort_order_changed (GSimpleAction *action, } static void +action_zoom_to_level (GSimpleAction *action, + GVariant *state, + gpointer user_data) +{ + NautilusView *view; + NautilusCanvasZoomLevel zoom_level; + + g_assert (NAUTILUS_IS_VIEW (user_data)); + + view = NAUTILUS_VIEW (user_data); + zoom_level = g_variant_get_int32 (state); + nautilus_canvas_view_zoom_to_level (view, zoom_level); +} + +static void switch_to_manual_layout (NautilusCanvasView *canvas_view) { if (!nautilus_canvas_view_using_auto_layout (canvas_view) || @@ -1019,6 +1019,7 @@ const GActionEntry canvas_view_entries[] = { { "keep-aligned", NULL, NULL, "true", action_keep_aligned }, { "reversed-order", NULL, NULL, "false", action_reversed_order }, { "sort", NULL, "s", "'name'", action_sort_order_changed }, + { "zoom-to-level", NULL, NULL, "1", action_zoom_to_level } }; static void @@ -1843,7 +1844,6 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass) nautilus_view_class->add_file = nautilus_canvas_view_add_file; nautilus_view_class->begin_loading = nautilus_canvas_view_begin_loading; nautilus_view_class->bump_zoom_level = nautilus_canvas_view_bump_zoom_level; - nautilus_view_class->zoom_to_level = nautilus_canvas_view_zoom_to_level; nautilus_view_class->can_rename_file = nautilus_canvas_view_can_rename_file; nautilus_view_class->can_zoom_in = nautilus_canvas_view_can_zoom_in; nautilus_view_class->can_zoom_out = nautilus_canvas_view_can_zoom_out; @@ -1862,7 +1862,6 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass) nautilus_view_class->set_selection = nautilus_canvas_view_set_selection; nautilus_view_class->invert_selection = nautilus_canvas_view_invert_selection; nautilus_view_class->compare_files = compare_files; - nautilus_view_class->zoom_to_level = nautilus_canvas_view_zoom_to_level; nautilus_view_class->click_policy_changed = nautilus_canvas_view_click_policy_changed; nautilus_view_class->update_toolbar_menus = nautilus_canvas_view_update_toolbar_menus; nautilus_view_class->update_actions_state = nautilus_canvas_view_update_actions_state; diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c index ea409d475..19af23b60 100644 --- a/src/nautilus-list-view.c +++ b/src/nautilus-list-view.c @@ -2816,6 +2816,36 @@ nautilus_list_view_select_first (NautilusView *view) } static void +nautilus_list_view_zoom_to_level (NautilusView *view, + gint zoom_level) +{ + NautilusListView *list_view; + + g_return_if_fail (NAUTILUS_IS_LIST_VIEW (view)); + + list_view = NAUTILUS_LIST_VIEW (view); + + nautilus_list_view_set_zoom_level (list_view, zoom_level); + + nautilus_view_update_toolbar_menus (view); +} + +static void +action_zoom_to_level (GSimpleAction *action, + GVariant *state, + gpointer user_data) +{ + NautilusView *view; + NautilusListZoomLevel zoom_level; + + g_assert (NAUTILUS_IS_VIEW (user_data)); + + view = NAUTILUS_VIEW (user_data); + zoom_level = g_variant_get_int32 (state); + nautilus_list_view_zoom_to_level (view, zoom_level); +} + +static void column_editor_response_callback (GtkWidget *dialog, int response_id, gpointer user_data) @@ -3018,6 +3048,7 @@ action_visible_columns (GSimpleAction *action, const GActionEntry list_view_entries[] = { { "visible-columns", action_visible_columns }, + { "zoom-to-level", NULL, NULL, "1", action_zoom_to_level } }; static void @@ -3063,21 +3094,6 @@ nautilus_list_view_set_zoom_level (NautilusListView *view, } static void -nautilus_list_view_zoom_to_level (NautilusView *view, - gint zoom_level) -{ - NautilusListView *list_view; - - g_return_if_fail (NAUTILUS_IS_LIST_VIEW (view)); - - list_view = NAUTILUS_LIST_VIEW (view); - - nautilus_list_view_set_zoom_level (list_view, zoom_level); - - NAUTILUS_VIEW_CLASS (nautilus_list_view_parent_class)->zoom_to_level (view, zoom_level); -} - -static void nautilus_list_view_bump_zoom_level (NautilusView *view, int zoom_increment) { NautilusListView *list_view; @@ -3505,7 +3521,6 @@ nautilus_list_view_class_init (NautilusListViewClass *class) nautilus_view_class->compare_files = nautilus_list_view_compare_files; nautilus_view_class->sort_directories_first_changed = nautilus_list_view_sort_directories_first_changed; nautilus_view_class->start_renaming_file = nautilus_list_view_start_renaming_file; - nautilus_view_class->zoom_to_level = nautilus_list_view_zoom_to_level; nautilus_view_class->end_file_changes = nautilus_list_view_end_file_changes; nautilus_view_class->using_manual_layout = nautilus_list_view_using_manual_layout; nautilus_view_class->get_view_id = nautilus_list_view_get_id; diff --git a/src/nautilus-view.c b/src/nautilus-view.c index 7847b47fe..1b3912452 100644 --- a/src/nautilus-view.c +++ b/src/nautilus-view.c @@ -275,9 +275,6 @@ static void update_templates_directory (NautilusView *vi static void unschedule_pop_up_pathbar_context_menu (NautilusView *view); -static void real_zoom_to_level (NautilusView *view, - gint zoom_level); - G_DEFINE_TYPE (NautilusView, nautilus_view, GTK_TYPE_SCROLLED_WINDOW); static char * @@ -486,39 +483,6 @@ nautilus_view_bump_zoom_level (NautilusView *view, NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->bump_zoom_level (view, zoom_increment); } -/* We want to keep the logic of which menus and when to update them in - * this class, so children need to chain to the parent when they set the zoom - * level through this function. - * The chain up should be done after the child updated the zoom level, so the - * menus are updated acordingly - * - */ -static void -real_zoom_to_level (NautilusView *view, - gint zoom_level) -{ - nautilus_view_update_toolbar_menus (view); -} - -/** - * nautilus_view_zoom_to_level: - * - * Set the current zoom level by invoking the relevant subclass through the slot - * - **/ -void -nautilus_view_zoom_to_level (NautilusView *view, - gint zoom_level) -{ - g_return_if_fail (NAUTILUS_IS_VIEW (view)); - - if (!nautilus_view_supports_zooming (view)) { - return; - } - - NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->zoom_to_level (view, zoom_level); -} - /** * nautilus_view_can_zoom_in: * @@ -1903,22 +1867,6 @@ action_zoom_default (GSimpleAction *action, } static void -action_zoom_to_level (GSimpleAction *action, - GVariant *state, - gpointer user_data) -{ - NautilusView *view; - gdouble zoom_value; - - g_assert (NAUTILUS_IS_VIEW (user_data)); - - view = NAUTILUS_VIEW (user_data); - zoom_value = g_variant_get_int32 (state); - - nautilus_view_zoom_to_level (view, zoom_value); -} - -static void action_open_item_new_window (GSimpleAction *action, GVariant *state, gpointer user_data) @@ -5725,7 +5673,6 @@ const GActionEntry view_entries[] = { { "zoom-in", action_zoom_in }, { "zoom-out", action_zoom_out }, { "zoom-default", action_zoom_default }, - { "zoom-to-level", NULL, NULL, "1", action_zoom_to_level }, { "undo", action_undo }, { "redo", action_redo }, { "show-hidden-files", NULL, NULL, "true", action_show_hidden_files }, @@ -7618,7 +7565,6 @@ nautilus_view_class_init (NautilusViewClass *klass) klass->update_context_menus = real_update_context_menus; klass->update_actions_state = real_update_actions_state; klass->update_toolbar_menus = real_update_toolbar_menus; - klass->zoom_to_level = real_zoom_to_level; copied_files_atom = gdk_atom_intern ("x-special/gnome-copied-files", FALSE); diff --git a/src/nautilus-view.h b/src/nautilus-view.h index 9c0644fc2..58a593d6e 100644 --- a/src/nautilus-view.h +++ b/src/nautilus-view.h @@ -183,11 +183,6 @@ struct NautilusViewClass { void (* bump_zoom_level) (NautilusView *view, int zoom_increment); - /* zoom_to_level is a function pointer that subclasses must override - * to set the zoom level of an object to the specified level. */ - void (* zoom_to_level) (NautilusView *view, - gint level); - /* restore_default_zoom_level is a function pointer that subclasses must override * to restore the zoom level of an object to a default setting. */ void (* restore_default_zoom_level) (NautilusView *view); |