|
|
83fdff |
diff -up evolution-3.22.6/shell/e-shell-window-private.c.wayland-hidden-menu-interact evolution-3.22.6/shell/e-shell-window-private.c
|
|
|
83fdff |
--- evolution-3.22.6/shell/e-shell-window-private.c.wayland-hidden-menu-interact 2017-11-16 13:59:52.598583231 +0100
|
|
|
83fdff |
+++ evolution-3.22.6/shell/e-shell-window-private.c 2017-11-16 13:59:52.630583230 +0100
|
|
|
83fdff |
@@ -261,7 +261,29 @@ delayed_menubar_show_cb (gpointer user_d
|
|
|
83fdff |
main_menu = e_shell_window_get_managed_widget (shell_window, "/main-menu");
|
|
|
83fdff |
|
|
|
83fdff |
gtk_widget_show (main_menu);
|
|
|
83fdff |
- gtk_widget_grab_focus (main_menu);
|
|
|
83fdff |
+ }
|
|
|
83fdff |
+
|
|
|
83fdff |
+ return FALSE;
|
|
|
83fdff |
+}
|
|
|
83fdff |
+
|
|
|
83fdff |
+static gboolean
|
|
|
83fdff |
+delayed_menubar_hide_cb (gpointer user_data)
|
|
|
83fdff |
+{
|
|
|
83fdff |
+ EShellWindow *shell_window = user_data;
|
|
|
83fdff |
+
|
|
|
83fdff |
+ g_return_val_if_fail (E_IS_SHELL_WINDOW (shell_window), FALSE);
|
|
|
83fdff |
+
|
|
|
83fdff |
+ shell_window->priv->delayed_menubar_hide_id = 0;
|
|
|
83fdff |
+
|
|
|
83fdff |
+ if (!e_shell_window_get_menubar_visible (shell_window) &&
|
|
|
83fdff |
+ !shell_window->priv->delayed_menubar_show_id) {
|
|
|
83fdff |
+ GtkWidget *main_menu;
|
|
|
83fdff |
+
|
|
|
83fdff |
+ main_menu = e_shell_window_get_managed_widget (shell_window, "/main-menu");
|
|
|
83fdff |
+
|
|
|
83fdff |
+ if (gtk_widget_get_visible (main_menu) &&
|
|
|
83fdff |
+ !gtk_menu_shell_get_selected_item (GTK_MENU_SHELL (main_menu)))
|
|
|
83fdff |
+ gtk_widget_hide (main_menu);
|
|
|
83fdff |
}
|
|
|
83fdff |
|
|
|
83fdff |
return FALSE;
|
|
|
83fdff |
@@ -295,6 +317,11 @@ e_shell_window_event_after_cb (EShellWin
|
|
|
83fdff |
|
|
|
83fdff |
if ((key_event->keyval == GDK_KEY_Alt_L || key_event->keyval == GDK_KEY_Alt_R) &&
|
|
|
83fdff |
!(key_event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK))) {
|
|
|
83fdff |
+ if (shell_window->priv->delayed_menubar_hide_id) {
|
|
|
83fdff |
+ g_source_remove (shell_window->priv->delayed_menubar_hide_id);
|
|
|
83fdff |
+ shell_window->priv->delayed_menubar_hide_id = 0;
|
|
|
83fdff |
+ }
|
|
|
83fdff |
+
|
|
|
83fdff |
if (shell_window->priv->delayed_menubar_show_id) {
|
|
|
83fdff |
g_source_remove (shell_window->priv->delayed_menubar_show_id);
|
|
|
83fdff |
shell_window->priv->delayed_menubar_show_id = 0;
|
|
|
83fdff |
@@ -312,8 +339,11 @@ e_shell_window_event_after_cb (EShellWin
|
|
|
83fdff |
shell_window->priv->delayed_menubar_show_id = 0;
|
|
|
83fdff |
}
|
|
|
83fdff |
|
|
|
83fdff |
- if (gtk_widget_get_visible (main_menu))
|
|
|
83fdff |
- gtk_widget_hide (main_menu);
|
|
|
83fdff |
+ if (gtk_widget_get_visible (main_menu) &&
|
|
|
83fdff |
+ !shell_window->priv->delayed_menubar_hide_id) {
|
|
|
83fdff |
+ shell_window->priv->delayed_menubar_hide_id =
|
|
|
83fdff |
+ e_named_timeout_add (500, delayed_menubar_hide_cb, shell_window);
|
|
|
83fdff |
+ }
|
|
|
83fdff |
}
|
|
|
83fdff |
}
|
|
|
83fdff |
|
|
|
83fdff |
@@ -618,6 +648,11 @@ e_shell_window_private_dispose (EShellWi
|
|
|
83fdff |
priv->delayed_menubar_show_id = 0;
|
|
|
83fdff |
}
|
|
|
83fdff |
|
|
|
83fdff |
+ if (priv->delayed_menubar_hide_id) {
|
|
|
83fdff |
+ g_source_remove (priv->delayed_menubar_hide_id);
|
|
|
83fdff |
+ priv->delayed_menubar_hide_id = 0;
|
|
|
83fdff |
+ }
|
|
|
83fdff |
+
|
|
|
83fdff |
/* Need to disconnect handlers before we unref the shell. */
|
|
|
83fdff |
if (priv->signal_handler_ids != NULL) {
|
|
|
83fdff |
GArray *array = priv->signal_handler_ids;
|
|
|
83fdff |
diff -up evolution-3.22.6/shell/e-shell-window-private.h.wayland-hidden-menu-interact evolution-3.22.6/shell/e-shell-window-private.h
|
|
|
83fdff |
--- evolution-3.22.6/shell/e-shell-window-private.h.wayland-hidden-menu-interact 2017-11-16 13:59:52.630583230 +0100
|
|
|
83fdff |
+++ evolution-3.22.6/shell/e-shell-window-private.h 2017-11-16 14:01:12.261582129 +0100
|
|
|
83fdff |
@@ -98,6 +98,7 @@ struct _EShellWindowPrivate {
|
|
|
83fdff |
guint is_main_instance : 1;
|
|
|
83fdff |
|
|
|
83fdff |
gulong delayed_menubar_show_id;
|
|
|
83fdff |
+ gulong delayed_menubar_hide_id;
|
|
|
83fdff |
};
|
|
|
83fdff |
|
|
|
83fdff |
void e_shell_window_private_init (EShellWindow *shell_window);
|