diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2015-01-26 15:43:01 +0000 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2015-01-26 15:43:01 +0000 |
commit | 67611448570a4575ca1b17c5061905b5b0a7030d (patch) | |
tree | eba817f8cdecbdcdbeb8af4957c5717368e121f4 | |
parent | 9ca3aeb336bf9699a23d3b34ade4421411de643c (diff) | |
download | nautilus-67611448570a4575ca1b17c5061905b5b0a7030d.tar.gz |
toolbar: cleanup handling of zoom actions
Store the entire state in the action. The toolbar will be called to
update the state anyway...
-rw-r--r-- | src/nautilus-canvas-view.c | 26 | ||||
-rw-r--r-- | src/nautilus-list-view.c | 24 | ||||
-rw-r--r-- | src/nautilus-toolbar-view-menu.xml | 13 | ||||
-rw-r--r-- | src/nautilus-toolbar.c | 50 | ||||
-rw-r--r-- | src/nautilus-toolbar.h | 3 | ||||
-rw-r--r-- | src/nautilus-view.c | 27 | ||||
-rw-r--r-- | src/nautilus-view.h | 2 |
7 files changed, 38 insertions, 107 deletions
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c index 98e2c2c67..3604acaa2 100644 --- a/src/nautilus-canvas-view.c +++ b/src/nautilus-canvas-view.c @@ -802,13 +802,15 @@ nautilus_canvas_view_zoom_to_level (NautilusView *view, g_return_if_fail (new_level >= NAUTILUS_CANVAS_ZOOM_LEVEL_SMALL && new_level <= NAUTILUS_CANVAS_ZOOM_LEVEL_LARGE); - 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); + g_action_group_change_action_state (nautilus_view_get_action_group (view), + "zoom-to-level", g_variant_new_int32 (new_level)); + nautilus_view_update_toolbar_menus (view); } @@ -828,8 +830,6 @@ nautilus_canvas_view_bump_zoom_level (NautilusView *view, int zoom_increment) new_level <= NAUTILUS_CANVAS_ZOOM_LEVEL_LARGE) { nautilus_canvas_view_zoom_to_level (view, new_level); } - - nautilus_view_update_toolbar_menus (view); } static void @@ -966,6 +966,8 @@ action_zoom_to_level (GSimpleAction *action, view = NAUTILUS_VIEW (user_data); zoom_level = g_variant_get_int32 (state); nautilus_canvas_view_zoom_to_level (view, zoom_level); + + g_simple_action_set_state (G_SIMPLE_ACTION (action), state); } static void @@ -1090,23 +1092,6 @@ nautilus_canvas_view_update_actions_state (NautilusView *view) } static void -nautilus_canvas_view_update_toolbar_menus (NautilusView *view) -{ - NautilusToolbar *toolbar; - NautilusCanvasContainer *canvas_container; - gint zoom_level; - - NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_toolbar_menus (view); - - toolbar = NAUTILUS_TOOLBAR (nautilus_window_get_toolbar (nautilus_view_get_window (view))); - canvas_container = get_canvas_container (NAUTILUS_CANVAS_VIEW (view)); - zoom_level = nautilus_canvas_container_get_zoom_level (canvas_container); - - nautilus_toolbar_view_menu_widget_set_zoom_level (toolbar, - (gdouble) (zoom_level)); -} - -static void nautilus_canvas_view_select_all (NautilusView *view) { NautilusCanvasContainer *canvas_container; @@ -1885,7 +1870,6 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass) nautilus_view_class->invert_selection = nautilus_canvas_view_invert_selection; nautilus_view_class->compare_files = compare_files; 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; nautilus_view_class->sort_directories_first_changed = nautilus_canvas_view_sort_directories_first_changed; nautilus_view_class->start_renaming_file = nautilus_canvas_view_start_renaming_file; diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c index 4192c79a8..445b986ef 100644 --- a/src/nautilus-list-view.c +++ b/src/nautilus-list-view.c @@ -2825,7 +2825,13 @@ nautilus_list_view_zoom_to_level (NautilusView *view, list_view = NAUTILUS_LIST_VIEW (view); + if (list_view->details->zoom_level == zoom_level) { + return; + } + nautilus_list_view_set_zoom_level (list_view, zoom_level); + g_action_group_change_action_state (nautilus_view_get_action_group (view), + "zoom-to-level", g_variant_new_int32 (zoom_level)); nautilus_view_update_toolbar_menus (view); } @@ -2843,6 +2849,8 @@ action_zoom_to_level (GSimpleAction *action, view = NAUTILUS_VIEW (user_data); zoom_level = g_variant_get_int32 (state); nautilus_list_view_zoom_to_level (view, zoom_level); + + g_simple_action_set_state (G_SIMPLE_ACTION (action), state); } static void @@ -3052,21 +3060,6 @@ const GActionEntry list_view_entries[] = { }; static void -nautilus_list_view_update_toolbar_menus (NautilusView *view) -{ - NautilusListView *list_view; - NautilusToolbar *toolbar; - - list_view = NAUTILUS_LIST_VIEW (view); - - NAUTILUS_VIEW_CLASS (nautilus_list_view_parent_class)->update_toolbar_menus (view); - - toolbar = NAUTILUS_TOOLBAR (nautilus_window_get_toolbar (nautilus_view_get_window (view))); - nautilus_toolbar_view_menu_widget_set_zoom_level (toolbar, - (gdouble) list_view->details->zoom_level); -} - -static void nautilus_list_view_set_zoom_level (NautilusListView *view, NautilusListZoomLevel new_level) { @@ -3510,7 +3503,6 @@ nautilus_list_view_class_init (NautilusListViewClass *class) nautilus_view_class->is_empty = nautilus_list_view_is_empty; nautilus_view_class->remove_file = nautilus_list_view_remove_file; nautilus_view_class->restore_default_zoom_level = nautilus_list_view_restore_default_zoom_level; - nautilus_view_class->update_toolbar_menus = nautilus_list_view_update_toolbar_menus; nautilus_view_class->reveal_selection = nautilus_list_view_reveal_selection; nautilus_view_class->select_all = nautilus_list_view_select_all; nautilus_view_class->select_first = nautilus_list_view_select_first; diff --git a/src/nautilus-toolbar-view-menu.xml b/src/nautilus-toolbar-view-menu.xml index 42249aa42..9f0ad9908 100644 --- a/src/nautilus-toolbar-view-menu.xml +++ b/src/nautilus-toolbar-view-menu.xml @@ -56,7 +56,7 @@ <property name="can_focus">True</property> <property name="draw_value">False</property> <property name="has_origin">False</property> - <property name="adjustment">zoom_adjustment_grid</property> + <property name="adjustment">zoom_adjustment</property> <property name="round_digits">0</property> <property name="restrict_to_fill_level">False</property> <marks> @@ -210,18 +210,11 @@ <object class="GThemedIcon" id="icon_list"> <property name="name">view-list-symbolic</property> </object> - <object class="GtkAdjustment" id="zoom_adjustment_list"> + <object class="GtkAdjustment" id="zoom_adjustment"> <property name="lower">0</property> <property name="upper">2</property> <property name="step_increment">1</property> <property name="page_increment">1</property> <property name="value">1</property> </object> - <object class="GtkAdjustment" id="zoom_adjustment_grid"> - <property name="lower">0</property> - <property name="upper">2</property> - <property name="step_increment">1</property> - <property name="page_increment">1</property> - <property name="value">1</property> - </object> -</interface>
\ No newline at end of file +</interface> diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c index 66a760087..06dd740fd 100644 --- a/src/nautilus-toolbar.c +++ b/src/nautilus-toolbar.c @@ -53,8 +53,6 @@ struct _NautilusToolbarPrivate { guint popup_timeout_id; - gdouble scale_zoom_level; - GtkWidget *view_button; GtkWidget *action_button; @@ -65,9 +63,7 @@ struct _NautilusToolbarPrivate { GtkWidget *visible_columns; GtkWidget *stop; GtkWidget *reload; - GtkAdjustment *zoom_adjustment_grid; - GtkAdjustment *zoom_adjustment_list; - GtkAdjustment *active_zoom_adjustment; + GtkAdjustment *zoom_adjustment; GtkWidget *zoom_level_scale; GMenu *action_menu; @@ -256,22 +252,17 @@ action_view_mode_state_changed (GActionGroup *action_group, { NautilusToolbar *self = user_data; const gchar *view_mode = g_variant_get_string (value, NULL); - gchar *name; + const gchar *name; GtkWidget *image; if (g_strcmp0 (view_mode, "list") == 0) { name = "view-list-symbolic"; - self->priv->active_zoom_adjustment = self->priv->zoom_adjustment_list; } else if (g_strcmp0 (view_mode, "grid") == 0) { name = "view-grid-symbolic"; - self->priv->active_zoom_adjustment = self->priv->zoom_adjustment_grid; } else { g_assert_not_reached (); } - gtk_range_set_adjustment (GTK_RANGE (self->priv->zoom_level_scale), - self->priv->active_zoom_adjustment); - image = gtk_image_new (); gtk_button_set_image (GTK_BUTTON (self->priv->view_button), image); gtk_image_set_from_icon_name (GTK_IMAGE (image), name, @@ -408,6 +399,7 @@ zoom_level_changed (GtkRange *range, slot = nautilus_window_get_active_slot (self->priv->window); view = nautilus_window_slot_get_current_view (slot); + g_print ("changing action state to %f in toolbar\n", zoom_level); g_action_group_change_action_state (nautilus_view_get_action_group (view), "zoom-to-level", g_variant_new_int32 ((gint) zoom_level)); @@ -432,8 +424,7 @@ nautilus_toolbar_init (NautilusToolbar *self) builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-toolbar-view-menu.xml"); self->priv->view_menu_widget = GTK_WIDGET (gtk_builder_get_object (builder, "view_menu_widget")); self->priv->zoom_level_scale = GTK_WIDGET (gtk_builder_get_object (builder, "zoom_level_scale")); - self->priv->zoom_adjustment_grid = g_object_ref (GTK_ADJUSTMENT (gtk_builder_get_object (builder, "zoom_adjustment_grid"))); - self->priv->zoom_adjustment_list = g_object_ref (GTK_ADJUSTMENT (gtk_builder_get_object (builder, "zoom_adjustment_list"))); + self->priv->zoom_adjustment = GTK_ADJUSTMENT (gtk_builder_get_object (builder, "zoom_adjustment")); self->priv->sort_menu = GTK_WIDGET (gtk_builder_get_object (builder, "sort_menu")); self->priv->sort_trash_time = GTK_WIDGET (gtk_builder_get_object (builder, "sort_trash_time")); @@ -519,9 +510,6 @@ nautilus_toolbar_dispose (GObject *obj) toolbar_update_appearance, self); unschedule_menu_popup_timeout (self); - g_clear_object (&self->priv->zoom_adjustment_grid); - g_clear_object (&self->priv->zoom_adjustment_list); - G_OBJECT_CLASS (nautilus_toolbar_parent_class)->dispose (obj); } @@ -570,7 +558,7 @@ nautilus_toolbar_reset_menus (NautilusToolbar *self) NautilusWindowSlot *slot; NautilusView *view; GActionGroup *view_action_group; - GVariant *sort_hint; + GVariant *variant; GVariantIter iter; gboolean sort_trash, sort_search, has_sort; const gchar *hint; @@ -592,8 +580,8 @@ nautilus_toolbar_reset_menus (NautilusToolbar *self) gtk_widget_set_visible (self->priv->sort_menu, has_sort); if (has_sort) { - sort_hint = g_action_group_get_action_state_hint (view_action_group, "sort"); - g_variant_iter_init (&iter, sort_hint); + variant = g_action_group_get_action_state_hint (view_action_group, "sort"); + g_variant_iter_init (&iter, variant); while (g_variant_iter_next (&iter, "&s", &hint)) { if (g_strcmp0 (hint, "trash-time") == 0) @@ -602,29 +590,17 @@ nautilus_toolbar_reset_menus (NautilusToolbar *self) sort_search = TRUE; } - g_variant_unref (sort_hint); + g_variant_unref (variant); } gtk_widget_set_visible (self->priv->sort_trash_time, sort_trash); gtk_widget_set_visible (self->priv->sort_search_relevance, sort_search); -} -void -nautilus_toolbar_view_menu_widget_set_zoom_level (NautilusToolbar *self, - gdouble level) -{ - g_return_if_fail (NAUTILUS_IS_TOOLBAR (self)); - - /* We only want to change the level when there's and actual view - * mode set, so skip all other calls to here. Those calls came from - * update_toolbar_menus in the natuilus-view after a parent is set, etc. - * We will receive eventually a mode change and another update here by nautilus view - * update_toolbar_menus */ - if (self->priv->active_zoom_adjustment == NULL) - return; - - gtk_adjustment_set_value (GTK_ADJUSTMENT (self->priv->active_zoom_adjustment), - level); + variant = g_action_group_get_action_state (view_action_group, "zoom-to-level"); + g_print ("reading back %d in the update\n", g_variant_get_int32 (variant)); + gtk_adjustment_set_value (self->priv->zoom_adjustment, + g_variant_get_int32 (variant)); + g_variant_unref (variant); } GtkWidget * diff --git a/src/nautilus-toolbar.h b/src/nautilus-toolbar.h index 10b77e52d..51a1d248d 100644 --- a/src/nautilus-toolbar.h +++ b/src/nautilus-toolbar.h @@ -73,7 +73,4 @@ void nautilus_toolbar_set_show_location_entry (NautilusToolbar *self, gboolean show_location_entry); void nautilus_toolbar_reset_menus (NautilusToolbar *self); -void nautilus_toolbar_view_menu_widget_set_zoom_level (NautilusToolbar *self, - gdouble level); - #endif /* __NAUTILUS_TOOLBAR_H__ */ diff --git a/src/nautilus-view.c b/src/nautilus-view.c index d1f1778c6..02a9c383e 100644 --- a/src/nautilus-view.c +++ b/src/nautilus-view.c @@ -6342,12 +6342,19 @@ nautilus_view_update_context_menus (NautilusView *view) NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->update_context_menus (view); } -static void -real_update_toolbar_menus (NautilusView *view) +/* Convenience function to reset the menus owned by the but that are managed on + * the toolbar and update them with the current state. + * It will also update the actions state, which will also update children + * actions state if the children subclass nautilus_view_update_actions_state + */ +void +nautilus_view_update_toolbar_menus (NautilusView *view) { NautilusToolbar *toolbar; NautilusWindow *window; + g_assert (NAUTILUS_IS_VIEW (view)); + window = nautilus_view_get_window (view); toolbar = NAUTILUS_TOOLBAR (nautilus_window_get_toolbar (window)); nautilus_toolbar_reset_menus (toolbar); @@ -6356,21 +6363,6 @@ real_update_toolbar_menus (NautilusView *view) nautilus_view_update_actions_state (view); } -/* Convenience function to reset the menus owned by the but that are managed on - * the toolbar and update them with the current state. - * Children can subclass it and add items on the menu after chaining up to the - * parent, so menus are already reseted. - * It will also update the actions state, which will also update children - * actions state if the children subclass nautilus_view_update_actions_state - */ -void -nautilus_view_update_toolbar_menus (NautilusView *view) -{ - g_assert(NAUTILUS_IS_VIEW (view)); - - NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->update_toolbar_menus (view); -} - /** * nautilus_view_pop_up_selection_context_menu * @@ -7378,7 +7370,6 @@ nautilus_view_class_init (NautilusViewClass *klass) klass->get_window = nautilus_view_get_window; klass->update_context_menus = real_update_context_menus; klass->update_actions_state = real_update_actions_state; - klass->update_toolbar_menus = real_update_toolbar_menus; 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 a2dc10c09..c8e0c26bf 100644 --- a/src/nautilus-view.h +++ b/src/nautilus-view.h @@ -216,8 +216,6 @@ struct NautilusViewClass { */ void (* update_context_menus) (NautilusView *view); - void (* update_toolbar_menus) (NautilusView *view); - void (* update_actions_state) (NautilusView *view); /* sort_files is a function pointer that subclasses can override |