[Xfce4-commits] [apps/xfce4-terminal] 01/01: Better approach to showing a hidden menubar with F10

noreply at xfce.org noreply at xfce.org
Fri Dec 23 15:05:15 CET 2016


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

f2404 pushed a commit to branch master
in repository apps/xfce4-terminal.

commit da32c9c2ec3b0577f0d40c65d25b11f022c2bc63
Author: Igor <f2404 at yandex.ru>
Date:   Fri Dec 23 17:05:10 2016 +0300

    Better approach to showing a hidden menubar with F10
---
 terminal/terminal-app.c    |  7 +++++-
 terminal/terminal-window.c | 57 ++++++++++++++++------------------------------
 2 files changed, 26 insertions(+), 38 deletions(-)

diff --git a/terminal/terminal-app.c b/terminal/terminal-app.c
index 49b5005..8fb371a 100644
--- a/terminal/terminal-app.c
+++ b/terminal/terminal-app.c
@@ -196,7 +196,9 @@ terminal_app_finalize (GObject *object)
 static void
 terminal_app_update_accels (TerminalApp *app)
 {
-  gboolean no_key;
+  gboolean        no_key;
+  GdkModifierType mod;
+  guint           key;
 
   g_object_get (G_OBJECT (app->preferences),
                 "shortcuts-no-menukey", &no_key,
@@ -205,6 +207,9 @@ terminal_app_update_accels (TerminalApp *app)
                 "gtk-menu-bar-accel",
                 no_key ? NULL : app->initial_menu_bar_accel,
                 NULL);
+  gtk_accelerator_parse (app->initial_menu_bar_accel, &key, &mod);
+  gtk_accel_map_change_entry ("<Actions>/terminal-window/toggle-menubar",
+                              no_key ? 0 : key, no_key ? 0 : mod, TRUE);
 
   g_object_get (G_OBJECT (app->preferences),
                 "shortcuts-no-helpkey", &no_key,
diff --git a/terminal/terminal-window.c b/terminal/terminal-window.c
index f975a1b..9c1e73b 100644
--- a/terminal/terminal-window.c
+++ b/terminal/terminal-window.c
@@ -102,8 +102,6 @@ static void         terminal_window_style_set                     (GtkWidget
                                                                    GtkStyle               *previous_style);
 static gboolean     terminal_window_scroll_event                  (GtkWidget              *widget,
                                                                    GdkEventScroll         *event);
-static gboolean     terminal_window_key_press_event               (GtkWidget              *widget,
-                                                                   GdkEventKey            *event);
 static gboolean     terminal_window_confirm_close                 (TerminalWindow         *window);
 static void         terminal_window_size_push                     (TerminalWindow         *window);
 static gboolean     terminal_window_size_pop                      (gpointer                data);
@@ -241,6 +239,8 @@ static void         terminal_window_switch_tab                    (GtkNotebook
 static void         terminal_window_move_tab                      (GtkNotebook            *notebook,
                                                                    gboolean                move_left);
 static void         terminal_window_tab_info_free                 (TerminalWindowTabInfo  *tab_info);
+static void         terminal_window_toggle_menubar                (GtkWidget              *widget,
+                                                                   TerminalWindow         *window);
 static void         terminal_window_menubar_deactivate            (GtkWidget              *widget,
                                                                    TerminalWindow         *window);
 
@@ -370,7 +370,6 @@ terminal_window_class_init (TerminalWindowClass *klass)
   gtkwidget_class->delete_event = terminal_window_delete_event;
   gtkwidget_class->style_set = terminal_window_style_set;
   gtkwidget_class->scroll_event = terminal_window_scroll_event;
-  gtkwidget_class->key_press_event = terminal_window_key_press_event;
 
   /**
    * TerminalWindow::new-window
@@ -414,6 +413,8 @@ terminal_window_init (TerminalWindow *window)
   GdkVisual       *visual;
   GtkStyleContext *context;
 
+  GClosure *toggle_menubar_closure = g_cclosure_new (G_CALLBACK (terminal_window_toggle_menubar), window, NULL);
+
   window->priv = G_TYPE_INSTANCE_GET_PRIVATE (window, TERMINAL_TYPE_WINDOW, TerminalWindowPrivate);
 
   window->priv->preferences = terminal_preferences_get ();
@@ -452,6 +453,8 @@ terminal_window_init (TerminalWindow *window)
   g_signal_connect_after (G_OBJECT (accel_group), "accel-activate",
       G_CALLBACK (terminal_window_accel_activate), window);
 
+  gtk_accel_group_connect_by_path (accel_group, "<Actions>/terminal-window/toggle-menubar", toggle_menubar_closure);
+
   window->priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (window), window->priv->vbox);
 
@@ -646,40 +649,6 @@ terminal_window_scroll_event (GtkWidget      *widget,
 
 
 static gboolean
-terminal_window_key_press_event (GtkWidget   *widget,
-                                 GdkEventKey *event)
-{
-  GdkModifierType  mod;
-  guint            key;
-  gboolean         no_menukey;
-  gchar           *menu_bar_accel;
-  TerminalWindow  *window = TERMINAL_WINDOW (widget);
-
-  g_object_get (G_OBJECT (window->priv->preferences),
-                "shortcuts-no-menukey", &no_menukey,
-                NULL);
-
-  if (!no_menukey && terminal_window_get_menubar_height (window) == 0)
-    {
-      g_object_get (G_OBJECT (gtk_settings_get_default ()),
-                    "gtk-menu-bar-accel", &menu_bar_accel,
-                    NULL);
-      gtk_accelerator_parse (menu_bar_accel, &key, &mod);
-      g_free (menu_bar_accel);
-      if (event->keyval == key && (event->state & gtk_accelerator_get_default_mod_mask ()) == mod)
-        {
-          terminal_window_size_push (window);
-          gtk_widget_show (window->priv->menubar);
-          terminal_window_size_pop (window);
-        }
-    }
-
-  return (*GTK_WIDGET_CLASS (terminal_window_parent_class)->key_press_event) (widget, event);
-}
-
-
-
-static gboolean
 terminal_window_confirm_close (TerminalWindow *window)
 {
   GtkWidget *dialog;
@@ -2265,6 +2234,20 @@ terminal_window_tab_info_free (TerminalWindowTabInfo *tab_info)
 
 
 static void
+terminal_window_toggle_menubar (GtkWidget      *widget,
+                                TerminalWindow *window)
+{
+  terminal_return_if_fail (TERMINAL_IS_WINDOW (window));
+
+  terminal_window_size_push (window);
+  if (terminal_window_get_menubar_height (window) == 0)
+    gtk_widget_show (window->priv->menubar);
+  terminal_window_size_pop (window);
+}
+
+
+
+static void
 terminal_window_menubar_deactivate (GtkWidget      *widget,
                                     TerminalWindow *window)
 {

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


More information about the Xfce4-commits mailing list