[Xfce4-commits] [apps/xfce4-terminal] 01/01: Temporarily show menubar with F10 even if it's hidden
noreply at xfce.org
noreply at xfce.org
Mon Dec 19 17:13:01 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 fd49cb660c333cb7534e15b3b759d1e202b489b0
Author: Igor <f2404 at yandex.ru>
Date: Mon Dec 19 19:11:54 2016 +0300
Temporarily show menubar with F10 even if it's hidden
Implements https://bugzilla.xfce.org/show_bug.cgi?id=13231
---
terminal/terminal-window.c | 80 ++++++++++++++++++++++++++++++++++++----------
1 file changed, 64 insertions(+), 16 deletions(-)
diff --git a/terminal/terminal-window.c b/terminal/terminal-window.c
index 9c7429a..92299ef 100644
--- a/terminal/terminal-window.c
+++ b/terminal/terminal-window.c
@@ -81,6 +81,8 @@ 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);
@@ -217,6 +219,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_menubar_deactivate (GtkWidget *widget,
+ TerminalWindow *window);
@@ -344,6 +348,7 @@ 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
@@ -615,6 +620,40 @@ 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;
@@ -1603,25 +1642,12 @@ static void
terminal_window_action_show_menubar (GtkToggleAction *action,
TerminalWindow *window)
{
- terminal_return_if_fail (GTK_IS_UI_MANAGER (window->priv->ui_manager));
-
terminal_window_size_push (window);
if (gtk_toggle_action_get_active (action))
- {
- if (G_LIKELY (window->priv->menubar == NULL))
- {
- window->priv->menubar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu");
- gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->menubar, FALSE, FALSE, 0);
- gtk_box_reorder_child (GTK_BOX (window->priv->vbox), window->priv->menubar, 0);
- }
-
- gtk_widget_show (window->priv->menubar);
- }
- else if (window->priv->menubar != NULL)
- {
- gtk_widget_hide (window->priv->menubar);
- }
+ gtk_widget_show (window->priv->menubar);
+ else
+ gtk_widget_hide (window->priv->menubar);
terminal_window_size_pop (window);
}
@@ -2189,6 +2215,20 @@ terminal_window_tab_info_free (TerminalWindowTabInfo *tab_info)
+static void
+terminal_window_menubar_deactivate (GtkWidget *widget,
+ TerminalWindow *window)
+{
+ GtkAction *action;
+
+ terminal_return_if_fail (TERMINAL_IS_WINDOW (window));
+
+ action = terminal_window_get_action (window, "show-menubar");
+ terminal_window_action_show_menubar (GTK_TOGGLE_ACTION (action), window);
+}
+
+
+
/**
* terminal_window_new:
* @fullscreen: Whether to set the window to fullscreen.
@@ -2224,11 +2264,19 @@ terminal_window_new (const gchar *role,
if (fullscreen && gtk_action_is_sensitive (window->priv->action_fullscreen))
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (window->priv->action_fullscreen), TRUE);
+ window->priv->menubar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu");
+ gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->menubar, FALSE, FALSE, 0);
+ gtk_box_reorder_child (GTK_BOX (window->priv->vbox), window->priv->menubar, 0);
+ /* auto-hide menubar if it was shown temporarily */
+ g_signal_connect (G_OBJECT (window->priv->menubar), "deactivate",
+ G_CALLBACK (terminal_window_menubar_deactivate), window);
+
/* setup menubar visibility */
if (G_LIKELY (menubar != TERMINAL_VISIBILITY_DEFAULT))
show_menubar = (menubar == TERMINAL_VISIBILITY_SHOW);
action = terminal_window_get_action (window, "show-menubar");
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), show_menubar);
+ terminal_window_action_show_menubar (GTK_TOGGLE_ACTION (action), window);
/* setup toolbar visibility */
if (G_LIKELY (toolbar != TERMINAL_VISIBILITY_DEFAULT))
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list