diff options
-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 |