[Xfce4-commits] [apps/xfce4-terminal] 01/01: Allow to use <Alt> shortcuts when menu mnemonics are disabled

noreply at xfce.org noreply at xfce.org
Wed Sep 25 19:25:55 CEST 2019


This is an automated email from the git hooks/post-receive script.

f   2   4   0   4       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository apps/xfce4-terminal.

commit c06538dbf702e4b2ac9c7993e933a01c0f3ce46e
Author: Igor <f2404 at yandex.ru>
Date:   Wed Sep 25 13:23:26 2019 -0400

    Allow to use <Alt> shortcuts when menu mnemonics are disabled
    
    Like <Alt>h (normally for "Help" menu).
    
    Fix bug #15989
---
 terminal/terminal-app.c    | 20 --------------------
 terminal/terminal-window.c | 26 +++++++++++++++++++++++++-
 2 files changed, 25 insertions(+), 21 deletions(-)

diff --git a/terminal/terminal-app.c b/terminal/terminal-app.c
index f714b77..56aa01c 100644
--- a/terminal/terminal-app.c
+++ b/terminal/terminal-app.c
@@ -60,7 +60,6 @@ static void     terminal_app_update_tab_key_accels    (gpointer            data,
                                                        guint               accel_key,
                                                        GdkModifierType     accel_mods,
                                                        gboolean            changed);
-static void     terminal_app_update_mnemonics         (TerminalApp        *app);
 static void     terminal_app_update_windows_accels    (gpointer            user_data);
 static gboolean terminal_app_accel_map_load           (gpointer            user_data);
 static gboolean terminal_app_accel_map_save           (gpointer            user_data);
@@ -139,8 +138,6 @@ terminal_app_init (TerminalApp *app)
                             G_CALLBACK (terminal_app_update_accels), app);
   g_signal_connect_swapped (G_OBJECT (app->preferences), "notify::shortcuts-no-helpkey",
                             G_CALLBACK (terminal_app_update_accels), app);
-  g_signal_connect_swapped (G_OBJECT (app->preferences), "notify::shortcuts-no-mnemonics",
-                            G_CALLBACK (terminal_app_update_mnemonics), app);
 
   /* remember the original menu bar accel */
   g_object_get (G_OBJECT (gtk_settings_get_default ()),
@@ -148,7 +145,6 @@ terminal_app_init (TerminalApp *app)
                 NULL);
 
   terminal_app_update_accels (app);
-  terminal_app_update_mnemonics (app);
 
   /* schedule accel map load and update windows when finished */
   app->accel_map_load_id = gdk_threads_add_idle_full (G_PRIORITY_LOW, terminal_app_accel_map_load, app,
@@ -185,7 +181,6 @@ terminal_app_finalize (GObject *object)
   g_slist_free (app->windows);
 
   g_signal_handlers_disconnect_by_func (G_OBJECT (app->preferences), G_CALLBACK (terminal_app_update_accels), app);
-  g_signal_handlers_disconnect_by_func (G_OBJECT (app->preferences), G_CALLBACK (terminal_app_update_mnemonics), app);
   g_object_unref (G_OBJECT (app->preferences));
 
   if (app->initial_menu_bar_accel != NULL)
@@ -252,21 +247,6 @@ terminal_app_update_tab_key_accels (gpointer         data,
 
 
 static void
-terminal_app_update_mnemonics (TerminalApp *app)
-{
-  gboolean no_mnemonics;
-
-  g_object_get (G_OBJECT (app->preferences),
-                "shortcuts-no-mnemonics", &no_mnemonics,
-                NULL);
-  g_object_set (G_OBJECT (gtk_settings_get_default ()),
-                "gtk-enable-mnemonics", !no_mnemonics,
-                NULL);
-}
-
-
-
-static void
 terminal_app_update_windows_accels (gpointer user_data)
 {
   TerminalApp *app = TERMINAL_APP (user_data);
diff --git a/terminal/terminal-window.c b/terminal/terminal-window.c
index 8218ed4..4d2b0d3 100644
--- a/terminal/terminal-window.c
+++ b/terminal/terminal-window.c
@@ -135,6 +135,7 @@ static void         terminal_window_set_size_force_grid           (TerminalWindo
 static void         terminal_window_update_actions                (TerminalWindow      *window);
 static void         terminal_window_update_slim_tabs              (TerminalWindow      *window);
 static void         terminal_window_update_scroll_on_output       (TerminalWindow      *window);
+static void         terminal_window_update_mnemonic_modifier      (TerminalWindow      *window);
 static void         terminal_window_notebook_page_switched        (GtkNotebook         *notebook,
                                                                    GtkWidget           *page,
                                                                    guint                page_num,
@@ -602,6 +603,11 @@ G_GNUC_END_IGNORE_DEPRECATIONS
   g_signal_connect_swapped (G_OBJECT (window->priv->preferences), "notify::scrolling-on-output",
                             G_CALLBACK (terminal_window_update_scroll_on_output), window);
 
+  /* monitor the shortcuts-no-mnemonics setting */
+  terminal_window_update_mnemonic_modifier (window);
+  g_signal_connect_swapped (G_OBJECT (window->priv->preferences), "notify::shortcuts-no-mnemonics",
+                            G_CALLBACK (terminal_window_update_mnemonic_modifier), window);
+
 #if defined(GDK_WINDOWING_X11)
   if (GDK_IS_X11_SCREEN (screen))
     {
@@ -623,9 +629,11 @@ terminal_window_finalize (GObject *object)
 {
   TerminalWindow *window = TERMINAL_WINDOW (object);
 
-  /* disconnect the scrolling-on-output watch */
+  /* disconnect scrolling-on-output and shortcuts-no-mnemonics watches */
   g_signal_handlers_disconnect_by_func (G_OBJECT (window->priv->preferences),
                                         G_CALLBACK (terminal_window_update_scroll_on_output), window);
+  g_signal_handlers_disconnect_by_func (G_OBJECT (window->priv->preferences),
+                                        G_CALLBACK (terminal_window_update_mnemonic_modifier), window);
 
   if (window->priv->preferences_dialog != NULL)
     gtk_widget_destroy (window->priv->preferences_dialog);
@@ -1165,6 +1173,22 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 
 
 static void
+terminal_window_update_mnemonic_modifier (TerminalWindow *window)
+{
+  gboolean no_mnemonics;
+
+  g_object_get (G_OBJECT (window->priv->preferences),
+                "shortcuts-no-mnemonics", &no_mnemonics,
+                NULL);
+  if (no_mnemonics)
+    gtk_window_set_mnemonic_modifier (GTK_WINDOW (window), GDK_MODIFIER_MASK & ~GDK_RELEASE_MASK);
+  else
+    gtk_window_set_mnemonic_modifier (GTK_WINDOW (window), GDK_MOD1_MASK);
+}
+
+
+
+static void
 terminal_window_notebook_page_switched (GtkNotebook     *notebook,
                                         GtkWidget       *page,
                                         guint            page_num,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list