vcl/unx/gtk3/gtk3gtkframe.cxx |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

New commits:
commit dbbce6bf7f21fd8d72fa9b01a28a4ea0d7e2ccdc
Author:     Caolán McNamara <[email protected]>
AuthorDate: Sun Aug 23 20:12:28 2020 +0100
Commit:     Christian Lohmaier <[email protected]>
CommitDate: Thu Aug 27 16:38:39 2020 +0200

    tdf#135779 move focus back to usual parent before grabbing pointer
    
    Change-Id: Ia4f1f2f1672a76515ab586d679a05467515868d6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101157
    Reviewed-by: Michael Stahl <[email protected]>
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
    Reviewed-by: Christian Lohmaier <[email protected]>
    Tested-by: Christian Lohmaier <[email protected]>

diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index b4757b39023c..28a19033ea0d 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -1988,6 +1988,13 @@ void GtkSalFrame::SetPointer( PointerStyle ePointerStyle 
)
 
 void GtkSalFrame::grabPointer( bool bGrab, bool bKeyboardAlso, bool 
bOwnerEvents )
 {
+    if (bGrab)
+    {
+        // tdf#135779 move focus back inside usual input window out of any
+        // other gtk widgets before grabbing the pointer
+        GrabFocus();
+    }
+
     static const char* pEnv = getenv( "SAL_NO_MOUSEGRABS" );
     if (pEnv && *pEnv)
         return;
@@ -2524,8 +2531,10 @@ void GtkSalFrame::GrabFocus()
         pGrabWidget = GTK_WIDGET(m_pWindow);
     else
         pGrabWidget = GTK_WIDGET(m_pFixedContainer);
-    gtk_widget_set_can_focus(pGrabWidget, true);
-    gtk_widget_grab_focus(pGrabWidget);
+    if (!gtk_widget_get_can_focus(pGrabWidget))
+        gtk_widget_set_can_focus(pGrabWidget, true);
+    if (!gtk_widget_has_focus(pGrabWidget))
+        gtk_widget_grab_focus(pGrabWidget);
 }
 
 gboolean GtkSalFrame::signalButton(GtkWidget*, GdkEventButton* pEvent, 
gpointer frame)
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to