From 7b740a66f80864abf24c2e8eddcfd624ef434ae7 Mon Sep 17 00:00:00 2001 From: Xan Lopez Date: Mon, 27 Jun 2011 21:48:44 +0200 Subject: Respect gtk-keynav-wrap-around in the global change-page handler We have a global-handler for Ctrl+Page{Up,Down} that is used in some situations (basically, when the notebook is not focused). It does not respect the wrap-around GtkSetting though, so the final experience can be inconsistent. --- src/ephy-window.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) (limited to 'src/ephy-window.c') diff --git a/src/ephy-window.c b/src/ephy-window.c index 28031e545..9f459b74e 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -2839,24 +2839,35 @@ update_tabs_menu_sensitivity (EphyWindow *window) GtkActionGroup *action_group; GtkAction *action; GtkNotebook *notebook; - int page, n_pages; - gboolean not_first, not_last; + gboolean wrap_around; + int n_pages; notebook = GTK_NOTEBOOK (priv->notebook); - page = gtk_notebook_get_current_page (notebook); + action_group = priv->action_group; n_pages = gtk_notebook_get_n_pages (notebook); - not_first = page > 0; - not_last = page + 1 < n_pages; - action_group = priv->action_group; - action = gtk_action_group_get_action (action_group, "TabsPrevious"); - gtk_action_set_sensitive (action, not_first); - action = gtk_action_group_get_action (action_group, "TabsNext"); - gtk_action_set_sensitive (action, not_last); - action = gtk_action_group_get_action (action_group, "TabsMoveLeft"); - gtk_action_set_sensitive (action, not_first); - action = gtk_action_group_get_action (action_group, "TabsMoveRight"); - gtk_action_set_sensitive (action, not_last); + g_object_get (gtk_widget_get_settings (GTK_WIDGET (notebook)), + "gtk-keynav-wrap-around", &wrap_around, + NULL); + + if (!wrap_around) + { + int page; + gboolean not_first, not_last; + + page = gtk_notebook_get_current_page (notebook); + not_first = page > 0; + not_last = page + 1 < n_pages; + + action = gtk_action_group_get_action (action_group, "TabsPrevious"); + gtk_action_set_sensitive (action, not_first); + action = gtk_action_group_get_action (action_group, "TabsNext"); + gtk_action_set_sensitive (action, not_last); + action = gtk_action_group_get_action (action_group, "TabsMoveLeft"); + gtk_action_set_sensitive (action, not_first); + action = gtk_action_group_get_action (action_group, "TabsMoveRight"); + gtk_action_set_sensitive (action, not_last); + } action = gtk_action_group_get_action (action_group, "TabsDetach"); ephy_action_change_sensitivity_flags (action, SENS_FLAG_CHROME, n_pages <= 1); -- cgit v1.2.3