diff options
author | Maxim Monastirsky <momonasmon@gmail.com> | 2017-09-17 23:35:55 +0300 |
---|---|---|
committer | Maxim Monastirsky <momonasmon@gmail.com> | 2017-09-24 15:37:28 +0300 |
commit | e867b197540cfc8b75bb1108c8bcd7a0ff65d347 (patch) | |
tree | 8dbcdc2d2db4b9f3fb0e302b5d8031386a75c346 /vcl/source/control/menubtn.cxx | |
parent | 8bd418a6b8253a9d725981743a0375e2c8bb911e (diff) |
tdf#106762 Base SvxColorToolBoxControl on svt::PopupWindowController
This allows us to support tearoff without breaking gtk3/wayland.
SvxColorWindow no longer inherits from FloatingWindow, so several
call sites need also to be changed to use DockingManager.
Change-Id: I5d0bc611bbd2a8b9bfd4335212d0ae7e8fc10593
Diffstat (limited to 'vcl/source/control/menubtn.cxx')
-rw-r--r-- | vcl/source/control/menubtn.cxx | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/vcl/source/control/menubtn.cxx b/vcl/source/control/menubtn.cxx index 92a3b96719e0..5771f24ab289 100644 --- a/vcl/source/control/menubtn.cxx +++ b/vcl/source/control/menubtn.cxx @@ -18,6 +18,7 @@ */ #include <vcl/decoview.hxx> +#include <vcl/dockwin.hxx> #include <vcl/event.hxx> #include <vcl/floatwin.hxx> #include <vcl/menu.hxx> @@ -55,7 +56,14 @@ void MenuButton::ExecuteMenu() { Point aPos(GetParent()->OutputToScreenPixel(GetPosPixel())); tools::Rectangle aRect(aPos, aSize ); - mpFloatingWindow->StartPopupMode(aRect, FloatWinPopupFlags::Down | FloatWinPopupFlags::GrabFocus); + FloatWinPopupFlags nFlags = FloatWinPopupFlags::Down | FloatWinPopupFlags::GrabFocus; + if (mpFloatingWindow->GetType() == WindowType::FLOATINGWINDOW) + static_cast<FloatingWindow*>(mpFloatingWindow.get())->StartPopupMode(aRect, nFlags); + else + { + mpFloatingWindow->EnableDocking(); + vcl::Window::GetDockingManager()->StartPopupMode(mpFloatingWindow, aRect, nFlags); + } } SetPressed(false); if (mnCurItemId) @@ -170,12 +178,12 @@ void MenuButton::SetPopupMenu(PopupMenu* pNewMenu) mpMenu = pNewMenu; } -void MenuButton::SetPopover(FloatingWindow* pFloatingWindow) +void MenuButton::SetPopover(Window* pWindow) { - if (pFloatingWindow == mpFloatingWindow) + if (pWindow == mpFloatingWindow) return; - mpFloatingWindow = pFloatingWindow; + mpFloatingWindow = pWindow; } //class MenuToggleButton ---------------------------------------------------- |