[evolution/gnome-3-36] EMailBrowser: Cannot type some letters in the search entry



commit af170dbeacc5ace868b2daac0e966306a01eb93e
Author: Milan Crha <mcrha redhat com>
Date:   Fri Mar 6 10:06:56 2020 +0100

    EMailBrowser: Cannot type some letters in the search entry
    
    When searching the message body, using Ctrl+Shift+F, letters and numbers
    used as a single-letter shortcut could not be used, having the key press
    being used like the shortcut.
    
    This also removes (now) unneeded code from:
    https://bugzilla.gnome.org/show_bug.cgi?id=787576

 src/mail/e-mail-browser.c                    | 13 ++++++--
 src/modules/mail/e-mail-shell-view-private.c | 45 ----------------------------
 src/modules/mail/e-mail-shell-view-private.h |  4 ---
 src/modules/mail/e-mail-shell-view.c         |  2 --
 4 files changed, 10 insertions(+), 54 deletions(-)
---
diff --git a/src/mail/e-mail-browser.c b/src/mail/e-mail-browser.c
index 5cd14cd51f..569406b32d 100644
--- a/src/mail/e-mail-browser.c
+++ b/src/mail/e-mail-browser.c
@@ -464,14 +464,21 @@ mail_browser_key_press_event_cb (GtkWindow *mail_browser,
 
        mail_display = e_mail_reader_get_mail_display (E_MAIL_READER (mail_browser));
 
-       if (!event || (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK)) != 0)
+       if (!event || (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK)) != 0 ||
+           event->keyval == GDK_KEY_Tab ||
+           event->keyval == GDK_KEY_Return ||
+           event->keyval == GDK_KEY_Escape ||
+           event->keyval == GDK_KEY_KP_Tab ||
+           event->keyval == GDK_KEY_KP_Enter)
                return event && e_mail_display_need_key_event (mail_display, event);
 
        focused = gtk_window_get_focus (mail_browser);
 
        if (focused && (GTK_IS_ENTRY (focused) || GTK_IS_EDITABLE (focused) ||
-           (GTK_IS_TREE_VIEW (focused) && gtk_tree_view_get_search_column (GTK_TREE_VIEW (focused)) >= 0)))
-               return FALSE;
+           (GTK_IS_TREE_VIEW (focused) && gtk_tree_view_get_search_column (GTK_TREE_VIEW (focused)) >= 0))) {
+               gtk_widget_event (focused, (GdkEvent *) event);
+               return TRUE;
+       }
 
        if (e_web_view_get_need_input (E_WEB_VIEW (mail_display)) &&
            gtk_widget_has_focus (GTK_WIDGET (mail_display))) {
diff --git a/src/modules/mail/e-mail-shell-view-private.c b/src/modules/mail/e-mail-shell-view-private.c
index 1aa0ab691a..f5022176cb 100644
--- a/src/modules/mail/e-mail-shell-view-private.c
+++ b/src/modules/mail/e-mail-shell-view-private.c
@@ -548,10 +548,6 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view)
        e_shell_window_add_action_group (shell_window, "mail-labels");
        e_shell_window_add_action_group (shell_window, "search-folders");
 
-       g_signal_connect (
-               shell_window, "set-focus",
-               G_CALLBACK (e_mail_shell_view_update_labels_sensitivity), shell_view);
-
        /* Cache these to avoid lots of awkward casting. */
        priv->mail_shell_backend = g_object_ref (shell_backend);
        priv->mail_shell_content = g_object_ref (shell_content);
@@ -1529,44 +1525,3 @@ e_mail_shell_view_update_send_receive_menus (EMailShellView *mail_shell_view)
                        GTK_MENU_TOOL_BUTTON (priv->send_receive_tool_item),
                        create_send_receive_submenu (mail_shell_view));
 }
-
-void
-e_mail_shell_view_update_labels_sensitivity (EShellWindow *shell_window,
-                                            GtkWidget *focused_widget,
-                                            EMailShellView *mail_shell_view)
-{
-       GtkActionGroup *action_group;
-       GtkAction *action;
-       GtkWidget *widget;
-       EMailReader *reader;
-       gboolean sensitive = FALSE;
-
-       g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
-       g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
-
-       /* It can be called also during the dispose of the GtkWindow,
-          when the UI manager is already freed */
-       if (!e_shell_window_get_ui_manager (shell_window))
-               return;
-
-       reader = E_MAIL_READER (e_mail_shell_content_get_mail_view 
(mail_shell_view->priv->mail_shell_content));
-
-       widget = focused_widget ? focused_widget : gtk_window_get_focus (GTK_WINDOW (shell_window));
-
-       while (widget) {
-               if (IS_MESSAGE_LIST (widget)) {
-                       sensitive = TRUE;
-                       break;
-               }
-
-               widget = gtk_widget_get_parent (widget);
-       }
-
-       action_group = e_mail_reader_get_action_group (reader, E_MAIL_READER_ACTION_GROUP_LABELS);
-       if (action_group)
-               gtk_action_group_set_sensitive (action_group, sensitive);
-
-       action = e_mail_reader_get_action (reader, "mail-label-none");
-       if (action)
-               gtk_action_set_sensitive (action, sensitive);
-}
diff --git a/src/modules/mail/e-mail-shell-view-private.h b/src/modules/mail/e-mail-shell-view-private.h
index ecb7bbdf09..5d158c1244 100644
--- a/src/modules/mail/e-mail-shell-view-private.h
+++ b/src/modules/mail/e-mail-shell-view-private.h
@@ -165,10 +165,6 @@ void               e_mail_shell_view_update_send_receive_menus
                                        (EMailShellView *mail_shell_view);
 GDBusProxy *   e_mail_shell_view_get_web_extension_proxy
                                        (EMailShellView *mail_shell_view);
-void           e_mail_shell_view_update_labels_sensitivity
-                                       (EShellWindow *shell_window,
-                                        GtkWidget *focused_widget,
-                                        EMailShellView *mail_shell_view);
 
 G_END_DECLS
 
diff --git a/src/modules/mail/e-mail-shell-view.c b/src/modules/mail/e-mail-shell-view.c
index 4274751321..f63c1ff1dd 100644
--- a/src/modules/mail/e-mail-shell-view.c
+++ b/src/modules/mail/e-mail-shell-view.c
@@ -1570,8 +1570,6 @@ mail_shell_view_update_actions (EShellView *shell_view)
        /* folder_is_store + folder_is_virtual == "Search Folders" */
        action = ACTION (MAIL_VFOLDER_UNMATCHED_ENABLE);
        gtk_action_set_visible (action, folder_is_store && folder_is_virtual);
-
-       e_mail_shell_view_update_labels_sensitivity (shell_window, NULL, mail_shell_view);
 }
 
 static void


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