[console] shortcuts: Enable Ctrl+PgUp/PgDn when multiple tabs



commit 4dc330c4f2030ce19af2ab742234821da945403f
Author: Anders Kaseorg <andersk mit edu>
Date:   Mon Mar 28 23:16:26 2022 -0700

    shortcuts: Enable Ctrl+PgUp/PgDn when multiple tabs
    
    Users expect Ctrl+PgUp/PgDn to switch tabs, but some terminal
    applications want to be able to use these keys themselves.  Make the
    same compromise that gnome-terminal does, and let these keys switch
    tabs _if_ there are multiple tabs in the current window to switch
    between.
    
    Fixes https://gitlab.gnome.org/GNOME/console/-/issues/118.
    
    Signed-off-by: Anders Kaseorg <andersk mit edu>

 src/kgx-pages.c  | 19 +++++++++++++++++++
 src/kgx-pages.h  |  1 +
 src/kgx-window.c |  9 +++++----
 3 files changed, 25 insertions(+), 4 deletions(-)
---
diff --git a/src/kgx-pages.c b/src/kgx-pages.c
index 0b7c37a..4084efd 100644
--- a/src/kgx-pages.c
+++ b/src/kgx-pages.c
@@ -819,6 +819,25 @@ kgx_pages_current_status (KgxPages *self)
 }
 
 
+/**
+ * kgx_pages_count:
+ * @self: the #KgxPages
+ *
+ * Returns: number of #KgxTab s in @self
+ */
+int
+kgx_pages_count (KgxPages *self)
+{
+  KgxPagesPrivate *priv;
+
+  g_return_val_if_fail (KGX_IS_PAGES (self), KGX_NONE);
+
+  priv = kgx_pages_get_instance_private (self);
+
+  return hdy_tab_view_get_n_pages (HDY_TAB_VIEW (priv->view));
+}
+
+
 /**
  * kgx_pages_get_children:
  * @self: the #KgxPages
diff --git a/src/kgx-pages.h b/src/kgx-pages.h
index 9fbaae6..9a03c77 100644
--- a/src/kgx-pages.h
+++ b/src/kgx-pages.h
@@ -45,6 +45,7 @@ void        kgx_pages_add_page       (KgxPages   *self,
                                       KgxTab     *page);
 void        kgx_pages_remove_page    (KgxPages   *self,
                                       KgxTab     *page);
+int         kgx_pages_count          (KgxPages   *self);
 GPtrArray  *kgx_pages_get_children   (KgxPages   *self);
 void        kgx_pages_focus_page     (KgxPages   *self,
                                       KgxTab     *page);
diff --git a/src/kgx-window.c b/src/kgx-window.c
index acddf60..3bc1d0c 100644
--- a/src/kgx-window.c
+++ b/src/kgx-window.c
@@ -260,10 +260,11 @@ key_press_event (GtkWidget   *widget,
    *
    * See https://gitlab.gnome.org/GNOME/libhandy/-/issues/422
    */
-  if ((keyval == GDK_KEY_Page_Up ||
-       keyval == GDK_KEY_KP_Page_Up ||
-       keyval == GDK_KEY_Page_Down ||
-       keyval == GDK_KEY_KP_Page_Down ||
+  if ((((keyval == GDK_KEY_Page_Up ||
+         keyval == GDK_KEY_KP_Page_Up ||
+         keyval == GDK_KEY_Page_Down ||
+         keyval == GDK_KEY_KP_Page_Down) &&
+        kgx_pages_count (KGX_PAGES (self->pages)) <= 1) ||
        keyval == GDK_KEY_Home ||
        keyval == GDK_KEY_KP_Home ||
        keyval == GDK_KEY_End ||


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]