summaryrefslogtreecommitdiff
path: root/vcl/source/control/menubtn.cxx
diff options
context:
space:
mode:
authorMaxim Monastirsky <momonasmon@gmail.com>2017-09-17 23:35:55 +0300
committerMaxim Monastirsky <momonasmon@gmail.com>2017-09-24 15:37:28 +0300
commite867b197540cfc8b75bb1108c8bcd7a0ff65d347 (patch)
tree8dbcdc2d2db4b9f3fb0e302b5d8031386a75c346 /vcl/source/control/menubtn.cxx
parent8bd418a6b8253a9d725981743a0375e2c8bb911e (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.cxx16
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 ----------------------------------------------------