diff options
author | Xan Lopez <xlopez@igalia.com> | 2011-06-28 03:48:44 +0800 |
---|---|---|
committer | Xan Lopez <xlopez@igalia.com> | 2011-06-28 03:48:44 +0800 |
commit | 7b740a66f80864abf24c2e8eddcfd624ef434ae7 (patch) | |
tree | 185635b7d28ad54191d3f4527f6cf30c58db4db8 /src | |
parent | 972de8b227165ed15f65c6401698501bdcd34565 (diff) | |
download | gsoc2013-epiphany-7b740a66f80864abf24c2e8eddcfd624ef434ae7.tar gsoc2013-epiphany-7b740a66f80864abf24c2e8eddcfd624ef434ae7.tar.gz gsoc2013-epiphany-7b740a66f80864abf24c2e8eddcfd624ef434ae7.tar.bz2 gsoc2013-epiphany-7b740a66f80864abf24c2e8eddcfd624ef434ae7.tar.lz gsoc2013-epiphany-7b740a66f80864abf24c2e8eddcfd624ef434ae7.tar.xz gsoc2013-epiphany-7b740a66f80864abf24c2e8eddcfd624ef434ae7.tar.zst gsoc2013-epiphany-7b740a66f80864abf24c2e8eddcfd624ef434ae7.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/ephy-window.c | 39 | ||||
-rw-r--r-- | src/window-commands.c | 20 |
2 files changed, 29 insertions, 30 deletions
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); diff --git a/src/window-commands.c b/src/window-commands.c index 61d6080a9..a67ad6d39 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -1091,18 +1091,12 @@ window_cmd_tabs_next (GtkAction *action, EphyWindow *window) { GtkNotebook *nb; - gint page; + gboolean handled; nb = GTK_NOTEBOOK (ephy_window_get_notebook (window)); g_return_if_fail (nb != NULL); - page = gtk_notebook_get_current_page (nb); - g_return_if_fail (page != -1); - - if (page < gtk_notebook_get_n_pages (nb) - 1) - { - gtk_notebook_set_current_page (nb, page + 1); - } + g_signal_emit_by_name (nb, "change-current-page", 1, &handled); } void @@ -1110,18 +1104,12 @@ window_cmd_tabs_previous (GtkAction *action, EphyWindow *window) { GtkNotebook *nb; - gint page; + gboolean handled; nb = GTK_NOTEBOOK (ephy_window_get_notebook (window)); g_return_if_fail (nb != NULL); - page = gtk_notebook_get_current_page (nb); - g_return_if_fail (page != -1); - - if (page > 0) - { - gtk_notebook_set_current_page (nb, page - 1); - } + g_signal_emit_by_name (nb, "change-current-page", -1, &handled); } void |