diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-12-10 11:32:23 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-12-10 14:48:47 +0100 |
commit | 0f17661e045e3e3732cec6e493cd20ac65dbe451 (patch) | |
tree | e9fb8fbec54a6fcb826e838466c66a4dcc4366f8 /vcl/source | |
parent | e369efa01183b4c304b49603628a7393aeb9ced0 (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.cxx | 25 |
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, |