[Libreoffice-commits] core.git: include/vcl vcl/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Thu Mar 11 09:05:11 UTC 2021
include/vcl/dockwin.hxx | 1 +
vcl/source/window/dockwin.cxx | 16 ++++++++++++++++
2 files changed, 17 insertions(+)
New commits:
commit 16a91006ca44da08fb436d70129e7a8cbff9e2d2
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Mar 10 14:21:42 2021 +0000
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Mar 11 10:04:21 2021 +0100
allow throwing away size cache of hosted container
Change-Id: I9d6eb1af80526c4853d695af3e269187569a538c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112271
Tested-by: Caolán McNamara <caolanm at redhat.com>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/include/vcl/dockwin.hxx b/include/vcl/dockwin.hxx
index 8dbe5ead00a4..afca81622a2f 100644
--- a/include/vcl/dockwin.hxx
+++ b/include/vcl/dockwin.hxx
@@ -248,6 +248,7 @@ protected:
public:
ResizableDockingWindow(vcl::Window* pParent,
const css::uno::Reference<css::frame::XFrame> &rFrame = css::uno::Reference<css::frame::XFrame>());
+ void InvalidateChildSizeCache();
ResizableDockingWindow(vcl::Window* pParent, WinBits nStyle);
virtual ~ResizableDockingWindow() override;
virtual void dispose() override;
diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx
index 6834317c87ff..3b622cf1cd73 100644
--- a/vcl/source/window/dockwin.cxx
+++ b/vcl/source/window/dockwin.cxx
@@ -1115,6 +1115,22 @@ ResizableDockingWindow::ResizableDockingWindow(vcl::Window* pParent, WinBits nSt
{
}
+// needed to blow away the cached size of the boundary between vcl and hosted child widget
+void ResizableDockingWindow::InvalidateChildSizeCache()
+{
+ // find the bottom vcl::Window of the hierarchy and queue_resize on that
+ // one will invalidate all the size caches upwards
+ vcl::Window* pChild = GetWindow(GetWindowType::FirstChild);
+ while (true)
+ {
+ vcl::Window* pSubChild = pChild->GetWindow(GetWindowType::FirstChild);
+ if (!pSubChild)
+ break;
+ pChild = pSubChild;
+ }
+ pChild->queue_resize();
+}
+
ResizableDockingWindow::~ResizableDockingWindow()
{
disposeOnce();
More information about the Libreoffice-commits
mailing list