kbrown / rpms / libreoffice

Forked from rpms/libreoffice 2 years ago
Clone

Blame SOURCES/0001-Resolves-rhbz-1505379-gtk3-X-open-comboboxes-block-s.patch

91334d
From 1e5e0f3ff363bdd0ed2d2e86113b42d6708f9be8 Mon Sep 17 00:00:00 2001
91334d
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
91334d
Date: Tue, 7 Nov 2017 13:26:27 +0000
91334d
Subject: [PATCH] Resolves: rhbz#1505379 gtk3+X: open comboboxes block session
91334d
91334d
if there's none of our windows under the mouse when clicked then close the
91334d
popup window.
91334d
91334d
There's similar code for gtk2, but using deprecated apis, do this again but
91334d
with the recommended apis
91334d
91334d
Change-Id: I9d844d098d09d0109dcbbc06390562e83edda397
91334d
---
91334d
 vcl/unx/gtk3/gtk3gtkframe.cxx | 16 +++++++++++-----
91334d
 1 file changed, 11 insertions(+), 5 deletions(-)
91334d
91334d
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
91334d
index 1535f11..3b539a7 100644
91334d
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
91334d
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
91334d
@@ -2608,12 +2608,18 @@ gboolean GtkSalFrame::signalButton( GtkWidget*, GdkEventButton* pEvent, gpointer
91334d
 
91334d
     vcl::DeletionListener aDel( pThis );
91334d
 
91334d
-    if (pThis->isFloatGrabWindow() && pEvent->window != widget_get_window(pThis->getMouseEventWidget()))
91334d
+    if (pThis->isFloatGrabWindow())
91334d
     {
91334d
-        if (pEvent->type == GDK_BUTTON_PRESS)
91334d
-            pThis->closePopup();
91334d
-        else if (pEvent->type == GDK_BUTTON_RELEASE)
91334d
-            return true;
91334d
+        //rhbz#1505379 if the window that got the event isn't our one, or there's none
91334d
+        //of our windows under the mouse then close this popup window
91334d
+        if (pEvent->window != widget_get_window(pThis->getMouseEventWidget()) ||
91334d
+            gdk_device_get_window_at_position(pEvent->device, nullptr, nullptr) == nullptr)
91334d
+        {
91334d
+            if (pEvent->type == GDK_BUTTON_PRESS)
91334d
+                pThis->closePopup();
91334d
+            else if (pEvent->type == GDK_BUTTON_RELEASE)
91334d
+                return true;
91334d
+        }
91334d
     }
91334d
 
91334d
     if (!aDel.isDeleted())
91334d
-- 
91334d
2.9.5
91334d