tdf#152155 vcl: fix gtk popup listbox positions on sidebar
It was fixed only on Wayland previously.
Follow-up to commit 15cdee0d846854b50dd04626b73499bef9305e00
"Resolves: tdf#152155 use gtk's knowledge of relative widget positions".
Change-Id: I7a8b17189b319146142a2193ec4b5ec41e2c2d27
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159020
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index 104b954..fd7ae85 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -118,6 +118,9 @@ class UITestLogger;
#define SV_ICON_ID_DATABASE 12
#define SV_ICON_ID_FORMULA 13
const FloatWinPopupFlags LISTBOX_FLOATWINPOPUPFLAGS = FloatWinPopupFlags::Down |
FloatWinPopupFlags::NoHorzPlacement | FloatWinPopupFlags::AllMouseButtonClose;
namespace com::sun::star::datatransfer::clipboard { class XClipboard; }
namespace vcl
diff --git a/vcl/source/control/imp_listbox.cxx b/vcl/source/control/imp_listbox.cxx
index 04919ca..bb4da51 100644
--- a/vcl/source/control/imp_listbox.cxx
+++ b/vcl/source/control/imp_listbox.cxx
@@ -3011,7 +3011,7 @@ void ImplListBoxFloatingWindow::StartFloat( bool bStartTracking )
pGrandparentOutDev->ReMirror( aRect );
// mouse-button right: close the List-Box-Float-win and don't stop the handling fdo#84795
StartPopupMode( aRect, FloatWinPopupFlags::Down | FloatWinPopupFlags::NoHorzPlacement | FloatWinPopupFlags::AllMouseButtonClose );
StartPopupMode( aRect, LISTBOX_FLOATWINPOPUPFLAGS );
if( nPos != LISTBOX_ENTRY_NOTFOUND )
mpImplLB->ShowProminentEntry( nPos );
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index b1bf847..f063f80 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -3091,8 +3091,12 @@ void GtkSalFrame::EndSetClipRegion()
void GtkSalFrame::PositionByToolkit(const tools::Rectangle& rRect, FloatWinPopupFlags nFlags)
{
if (ImplGetSVData()->maNWFData.mbCanDetermineWindowPosition)
if ( ImplGetSVData()->maNWFData.mbCanDetermineWindowPosition &&
// tdf#152155 cannot determine window positions of popup listboxes on sidebar
nFlags != LISTBOX_FLOATWINPOPUPFLAGS )
{
return;
}
m_aFloatRect = rRect;
m_nFloatFlags = nFlags;