[Libreoffice-commits] core.git: Branch 'libreoffice-6-4' - vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Tue Mar 17 10:29:33 UTC 2020


 vcl/unx/gtk3/gtk3gtkinst.cxx |   30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

New commits:
commit 35d451044f2873a9e9f566044cd4ab26b6dfbab0
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Mar 4 10:13:08 2020 +0000
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Tue Mar 17 11:29:01 2020 +0100

    tdf#131076 allow 'return' in GtkComboBox to activate default widget
    
    typically ok and accept the dialog. alt+down is documented as the
    default menu-activate key binding, space will also work to popup
    the menu from a combobox.
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89950
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 7a078207fbfd71b33cb51c38b3886351fedcde8d)
    
    Change-Id: I7bec880670cc006b288996d6f59a88fe9a9fb8cc
    
    tdf#131223 let return deactive active popup
    
    Change-Id: Ib116a1eb047aa9f1a5ca7a2ec9333a793addd304
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90188
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 0d81a613ef5af22253e51d9917c5d5c94d764456)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90381
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 541b3356b203..f82347713d65 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -11409,6 +11409,24 @@ private:
         return pThis->signal_key_press(pEvent);
     }
 
+    // tdf#131076 we want return in a GtkComboBox to act like return in a
+    // GtkEntry and activate the default dialog/assistant button
+    bool combobox_activate()
+    {
+        GtkWidget *pComboBox = GTK_WIDGET(m_pComboBox);
+        GtkWidget *pToplevel = gtk_widget_get_toplevel(pComboBox);
+        GtkWindow *pWindow = GTK_WINDOW(pToplevel);
+        if (!pWindow)
+            return false;
+        if (!GTK_IS_DIALOG(pWindow) && !GTK_IS_ASSISTANT(pWindow))
+            return false;
+        bool bDone = false;
+        GtkWidget *pDefaultWidget = gtk_window_get_default_widget(pWindow);
+        if (pDefaultWidget && pDefaultWidget != m_pToggleButton && gtk_widget_get_sensitive(pDefaultWidget))
+            bDone = gtk_widget_activate(pDefaultWidget);
+        return bDone;
+    }
+
     bool signal_key_press(const GdkEventKey* pEvent)
     {
         KeyEvent aKEvt(GtkToVcl(*pEvent));
@@ -11417,7 +11435,8 @@ private:
 
         bool bDone = false;
 
-        switch (aKeyCode.GetCode())
+        auto nCode = aKeyCode.GetCode();
+        switch (nCode)
         {
             case KEY_DOWN:
             case KEY_UP:
@@ -11429,9 +11448,16 @@ private:
             case KEY_RIGHT:
             case KEY_RETURN:
                 m_aQuickSelectionEngine.Reset();
+                // tdf#131076 don't let bare return toggle menu popup active, but do allow deactive
+                if (nCode == KEY_RETURN && !pEvent->state && !m_bPopupActive)
+                    bDone = combobox_activate();
                 break;
             default:
-                bDone = m_aQuickSelectionEngine.HandleKeyEvent(aKEvt);
+                // tdf#131076 let base space toggle menu popup when its not already visible
+                if (nCode == KEY_SPACE && !pEvent->state && !m_bPopupActive)
+                    bDone = false;
+                else
+                    bDone = m_aQuickSelectionEngine.HandleKeyEvent(aKEvt);
                 break;
         }
 


More information about the Libreoffice-commits mailing list