3a3da35
From 722d918c8f185daae2f3c01cc77d1b3badec936a Mon Sep 17 00:00:00 2001
877b95c
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
877b95c
Date: Wed, 16 Nov 2016 11:52:39 +0000
877b95c
Subject: [PATCH] gtk: under wayland tracking the window position is worthless
877b95c
877b95c
which isn't news, but...
877b95c
877b95c
with focus follows mouse enabled, activate filter menu of a calc autofilter.
877b95c
Move the mouse around and enter the menu, menu pops down because there are
877b95c
configure and mouse events which indicate that the position of the main
877b95c
application window has "moved"
877b95c
877b95c
when LibreOffice detects the window has moved, it closes the windows
877b95c
popups, so the menu disappears.
877b95c
877b95c
Change-Id: I2d1aa4a51153002c925e2dde4402da2d84e52de5
877b95c
---
877b95c
 vcl/source/app/settings.cxx               |  2 +-
877b95c
 vcl/unx/gtk3/gtk3gtkframe.cxx             | 10 ++++++++--
877b95c
 vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx |  2 +-
3a3da35
 3 files changed, 10 insertions(+), 4 deletions(-)
877b95c
877b95c
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
3a3da35
index 9ef9fd2..d6f6300 100644
877b95c
--- a/vcl/source/app/settings.cxx
877b95c
+++ b/vcl/source/app/settings.cxx
3a3da35
@@ -1935,7 +1935,7 @@ bool
877b95c
 StyleSettings::GetDockingFloatsSupported()
877b95c
 {
877b95c
     ImplSVData* pSVData = ImplGetSVData();
877b95c
-    return pSVData->maNWFData.mbDockingFloatsSupported;
877b95c
+    return pSVData->maNWFData.mbCanDetermineWindowPosition;
877b95c
 }
877b95c
 
877b95c
 void
877b95c
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
3a3da35
index 77735391..24ffcdd 100644
877b95c
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
877b95c
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
3a3da35
@@ -2772,7 +2772,9 @@ gboolean GtkSalFrame::signalMotion( GtkWidget*, GdkEventMotion* pEvent, gpointer
877b95c
     {
877b95c
         pThis->maGeometry.nX = frame_x;
877b95c
         pThis->maGeometry.nY = frame_y;
877b95c
-        pThis->CallCallbackExc(SalEvent::Move, nullptr);
877b95c
+        ImplSVData* pSVData = ImplGetSVData();
877b95c
+        if (pSVData->maNWFData.mbCanDetermineWindowPosition)
877b95c
+            pThis->CallCallbackExc(SalEvent::Move, nullptr);
877b95c
     }
877b95c
 
877b95c
     if( ! aDel.isDeleted() )
877b95c
@@ -2894,7 +2896,11 @@ gboolean GtkSalFrame::signalConfigure(GtkWidget*, GdkEventConfigure* pEvent, gpo
877b95c
     pThis->updateScreenNumber();
877b95c
 
877b95c
     if (bMoved)
877b95c
-        pThis->CallCallbackExc(SalEvent::Move, nullptr);
877b95c
+    {
877b95c
+        ImplSVData* pSVData = ImplGetSVData();
877b95c
+        if (pSVData->maNWFData.mbCanDetermineWindowPosition)
877b95c
+            pThis->CallCallbackExc(SalEvent::Move, nullptr);
877b95c
+    }
877b95c
 
877b95c
     return false;
877b95c
 }
877b95c
diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
3a3da35
index 091a615..55ebc71 100644
877b95c
--- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
877b95c
+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
3a3da35
@@ -2330,7 +2330,7 @@ void GtkData::initNWF()
877b95c
     //and floating dockable toolbars
877b95c
     GdkDisplay *pDisplay = gdk_display_get_default();
877b95c
     if (GDK_IS_WAYLAND_DISPLAY(pDisplay))
877b95c
-        pSVData->maNWFData.mbDockingFloatsSupported = false;
877b95c
+        pSVData->maNWFData.mbCanDetermineWindowPosition = false;
877b95c
 #endif
877b95c
 }
877b95c
 
877b95c
-- 
877b95c
2.9.3
877b95c