summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-12-10 11:32:23 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-12-10 14:48:47 +0100
commit0f17661e045e3e3732cec6e493cd20ac65dbe451 (patch)
treee9fb8fbec54a6fcb826e838466c66a4dcc4366f8 /vcl/source
parente369efa01183b4c304b49603628a7393aeb9ced0 (diff)
add resize_to_request to popover
Change-Id: I4bd549efd934946f355f06645ed816acd370a51d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126634 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/app/salvtables.cxx25
1 files changed, 22 insertions, 3 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index f0a2f9f7a6f4..a35c90fef9a1 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1441,20 +1441,25 @@ css::uno::Reference<css::awt::XWindow> SalInstanceWindow::GetXWindow()
return xWindow;
}
-void SalInstanceWindow::resize_to_request()
+namespace
+{
+void resize_to_request(vcl::Window* pWindow)
{
- if (SystemWindow* pSysWin = dynamic_cast<SystemWindow*>(m_xWindow.get()))
+ if (SystemWindow* pSysWin = dynamic_cast<SystemWindow*>(pWindow))
{
pSysWin->setOptimalLayoutSize();
return;
}
- if (DockingWindow* pDockWin = dynamic_cast<DockingWindow*>(m_xWindow.get()))
+ if (DockingWindow* pDockWin = dynamic_cast<DockingWindow*>(pWindow))
{
pDockWin->setOptimalLayoutSize();
return;
}
assert(false && "must be system or docking window");
}
+}
+
+void SalInstanceWindow::resize_to_request() { ::resize_to_request(m_xWindow.get()); }
void SalInstanceWindow::set_modal(bool bModal) { m_xWindow->ImplGetFrame()->SetModal(bModal); }
@@ -6742,6 +6747,20 @@ void SalInstancePopover::ImplPopDown()
void SalInstancePopover::popdown() { ImplPopDown(); }
+void SalInstancePopover::resize_to_request()
+{
+ ::resize_to_request(m_xPopover.get());
+
+ DockingManager* pDockingManager = vcl::Window::GetDockingManager();
+ if (pDockingManager->IsInPopupMode(m_xPopover.get()))
+ {
+ Size aSize = m_xPopover->get_preferred_size();
+ tools::Rectangle aRect = pDockingManager->GetPosSizePixel(m_xPopover.get());
+ pDockingManager->SetPosSizePixel(m_xPopover.get(), aRect.Left(), aRect.Top(), aSize.Width(),
+ aSize.Height(), PosSizeFlags::Size);
+ }
+}
+
IMPL_LINK_NOARG(SalInstancePopover, PopupModeEndHdl, FloatingWindow*, void) { signal_closed(); }
SalInstanceBuilder::SalInstanceBuilder(vcl::Window* pParent, const OUString& rUIRoot,