vcl/inc/svdata.hxx | 2 ++ vcl/source/window/brdwin.cxx | 3 ++- vcl/unx/gtk3/salnativewidgets-gtk.cxx | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-)
New commits: commit eaa0954fbf455ad7a71c011406e382ee7f7a8018 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Jul 28 10:41:29 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Thu Jul 28 17:24:54 2022 +0200 gtk4: don't attempt to create a visual junction between float and launcher the alignment won't match when using GtkPopover to implement these, there's an extra border+margin between the launcher and the contents Change-Id: Idb78d903874fee5a28e87c89951d9b3f9063c547 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137554 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 8490a6f020c5..3651eb3bce61 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -327,6 +327,8 @@ struct ImplSVNWFData bool mbFlatMenu = false; // no popup 3D border bool mbNoFocusRects = false; // on Aqua/Gtk3 use native focus rendering, except for flat buttons bool mbNoFocusRectsForFlatButtons = false; // on Gtk3 native focusing is also preferred for flat buttons + bool mbNoFrameJunctionForPopups = false; // on Gtk4 popups are done via popovers and a toolbar menu won't align to its toolitem, so + // omit the effort the creation a visual junction bool mbCenteredTabs = false; // on Aqua, tabs are centered bool mbNoActiveTabTextRaise = false; // on Aqua the text for the selected tab // should not "jump up" a pixel diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx index c003ed17b78d..6617de6414b3 100644 --- a/vcl/source/window/brdwin.cxx +++ b/vcl/source/window/brdwin.cxx @@ -1363,7 +1363,8 @@ void ImplStdBorderWindowView::DrawWindow(vcl::RenderContext& rRenderContext, con vcl::Region oldClipRgn(rRenderContext.GetClipRegion()); // for popups, don't draw part of the frame - if (!(pData->mnTitleType & (BorderWindowTitleType::Normal | BorderWindowTitleType::Small))) + const bool bShowJunctionToLauncher = !(pData->mnTitleType & (BorderWindowTitleType::Normal | BorderWindowTitleType::Small)); + if (bShowJunctionToLauncher && !ImplGetSVData()->maNWFData.mbNoFrameJunctionForPopups) { FloatingWindow* pWin = dynamic_cast<FloatingWindow*>(pData->mpBorderWindow->GetWindow(GetWindowType::Client)); if (pWin) diff --git a/vcl/unx/gtk3/salnativewidgets-gtk.cxx b/vcl/unx/gtk3/salnativewidgets-gtk.cxx index 3074dd0fbad7..3bbc9365f46d 100644 --- a/vcl/unx/gtk3/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/salnativewidgets-gtk.cxx @@ -2823,6 +2823,9 @@ void GtkSalData::initNWF() pSVData->maNWFData.mbNoFocusRects = true; pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true; pSVData->maNWFData.mbAutoAccel = true; +#if GTK_CHECK_VERSION(4, 0, 0) + pSVData->maNWFData.mbNoFrameJunctionForPopups = true; +#endif #if defined(GDK_WINDOWING_WAYLAND) //gnome#768128 for the car crash that is wayland