Kaydet (Commit) e867b197 authored tarafından Maxim Monastirsky's avatar Maxim Monastirsky

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
üst 8bd418a6
...@@ -50,6 +50,9 @@ public: ...@@ -50,6 +50,9 @@ public:
ToolbarPopup(const css::uno::Reference<css::frame::XFrame>& rFrame, ToolbarPopup(const css::uno::Reference<css::frame::XFrame>& rFrame,
vcl::Window* pParentWindow, vcl::Window* pParentWindow,
WinBits nBits ); WinBits nBits );
ToolbarPopup(const css::uno::Reference<css::frame::XFrame>& rFrame,
vcl::Window* pParentWindow,
const OString& rID, const OUString& rUIXMLDescription );
virtual ~ToolbarPopup() override; virtual ~ToolbarPopup() override;
virtual void dispose() override; virtual void dispose() override;
...@@ -64,6 +67,8 @@ protected: ...@@ -64,6 +67,8 @@ protected:
virtual void statusChanged(const css::frame::FeatureStateEvent& Event ); virtual void statusChanged(const css::frame::FeatureStateEvent& Event );
private: private:
void init();
css::uno::Reference< css::frame::XFrame > mxFrame; css::uno::Reference< css::frame::XFrame > mxFrame;
rtl::Reference< svt::FrameStatusListener > mxStatusListener; rtl::Reference< svt::FrameStatusListener > mxStatusListener;
}; };
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#define INCLUDED_SVX_SOURCE_TBXCTRLS_COLORWINDOW_HXX #define INCLUDED_SVX_SOURCE_TBXCTRLS_COLORWINDOW_HXX
#include <sfx2/tbxctrl.hxx> #include <sfx2/tbxctrl.hxx>
#include <svtools/toolbarmenu.hxx>
#include <svtools/valueset.hxx> #include <svtools/valueset.hxx>
#include <svl/lstner.hxx> #include <svl/lstner.hxx>
#include <rtl/ustring.hxx> #include <rtl/ustring.hxx>
...@@ -48,7 +49,7 @@ typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunct ...@@ -48,7 +49,7 @@ typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunct
#define COL_NONE_COLOR TRGB_COLORDATA(0x80, 0xFF, 0xFF, 0xFF) #define COL_NONE_COLOR TRGB_COLORDATA(0x80, 0xFF, 0xFF, 0xFF)
class SVX_DLLPUBLIC SvxColorWindow : public SfxPopupWindow class SVX_DLLPUBLIC SvxColorWindow : public svtools::ToolbarPopup
{ {
private: private:
const sal_uInt16 theSlotId; const sal_uInt16 theSlotId;
......
...@@ -205,25 +205,34 @@ friend class SfxStyleControllerItem_Impl; ...@@ -205,25 +205,34 @@ friend class SfxStyleControllerItem_Impl;
typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunction; typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunction;
class SVX_DLLPUBLIC SvxColorToolBoxControl : public cppu::ImplInheritanceHelper< SfxToolBoxControl, class SVX_DLLPUBLIC SvxColorToolBoxControl : public cppu::ImplInheritanceHelper< svt::PopupWindowController,
css::frame::XSubToolbarController > css::frame::XSubToolbarController >
{ {
std::unique_ptr<svx::ToolboxButtonColorUpdater> m_xBtnUpdater; std::unique_ptr<svx::ToolboxButtonColorUpdater> m_xBtnUpdater;
std::unique_ptr<PaletteManager> m_xPaletteManager; std::unique_ptr<PaletteManager> m_xPaletteManager;
BorderColorStatus m_aBorderColorStatus; BorderColorStatus m_aBorderColorStatus;
bool m_bSplitButton; bool m_bSplitButton;
sal_uInt16 m_nSlotId;
ColorSelectFunction m_aColorSelectFunction; ColorSelectFunction m_aColorSelectFunction;
DECL_LINK(SelectedHdl, const NamedColor&, void); DECL_LINK(SelectedHdl, const NamedColor&, void);
public: public:
SFX_DECL_TOOLBOX_CONTROL(); explicit SvxColorToolBoxControl( const css::uno::Reference<css::uno::XComponentContext>& rContext );
SvxColorToolBoxControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rToolBox);
virtual ~SvxColorToolBoxControl() override; virtual ~SvxColorToolBoxControl() override;
// XInitialization
virtual void SAL_CALL initialize( const css::uno::Sequence<css::uno::Any>& rArguments ) override;
// XUpdatable
virtual void SAL_CALL update() override;
// XStatusListener // XStatusListener
virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& rEvent ) override; virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& rEvent ) override;
virtual VclPtr<SfxPopupWindow> CreatePopupWindow() override; // XToolbarController
virtual void Select(sal_uInt16 nSelectModifier) override; virtual void SAL_CALL execute( sal_Int16 nSelectModifier ) override;
using svt::ToolboxController::createPopupWindow;
virtual VclPtr<vcl::Window> createPopupWindow( vcl::Window* pParent ) override;
// XSubToolbarController // XSubToolbarController
virtual sal_Bool SAL_CALL opensSubToolbar() override; virtual sal_Bool SAL_CALL opensSubToolbar() override;
...@@ -231,6 +240,10 @@ public: ...@@ -231,6 +240,10 @@ public:
virtual void SAL_CALL functionSelected( const OUString& rCommand ) override; virtual void SAL_CALL functionSelected( const OUString& rCommand ) override;
virtual void SAL_CALL updateImage() override; virtual void SAL_CALL updateImage() override;
// XServiceInfo
virtual OUString SAL_CALL getImplementationName() override;
virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
void setColorSelectFunction(const ColorSelectFunction& aColorSelectFunction); void setColorSelectFunction(const ColorSelectFunction& aColorSelectFunction);
void EnsurePaletteManager(); void EnsurePaletteManager();
}; };
......
...@@ -36,7 +36,7 @@ private: ...@@ -36,7 +36,7 @@ private:
Timer* mpMenuTimer; Timer* mpMenuTimer;
VclPtr<PopupMenu> mpMenu; VclPtr<PopupMenu> mpMenu;
VclPtr<FloatingWindow> mpFloatingWindow; VclPtr<Window> mpFloatingWindow;
sal_uInt16 mnCurItemId; sal_uInt16 mnCurItemId;
bool mbDelayMenu; bool mbDelayMenu;
Link<MenuButton*,void> maActivateHdl; Link<MenuButton*,void> maActivateHdl;
...@@ -75,7 +75,7 @@ public: ...@@ -75,7 +75,7 @@ public:
void SetPopupMenu(PopupMenu* pNewMenu); void SetPopupMenu(PopupMenu* pNewMenu);
PopupMenu* GetPopupMenu() const { return mpMenu; } PopupMenu* GetPopupMenu() const { return mpMenu; }
void SetPopover(FloatingWindow* pFloatingWindow); void SetPopover(Window* pWindow);
sal_uInt16 GetCurItemId() const { return mnCurItemId; } sal_uInt16 GetCurItemId() const { return mnCurItemId; }
OString GetCurItemIdent() const; OString GetCurItemIdent() const;
......
...@@ -1221,37 +1221,103 @@ ...@@ -1221,37 +1221,103 @@
<value>com.sun.star.comp.svx.CurrencyToolBoxControl</value> <value>com.sun.star.comp.svx.CurrencyToolBoxControl</value>
</prop> </prop>
</node> </node>
<node oor:name="c4" oor:op="replace" install:module="reportbuilder"> <node oor:name="FontColorToolBox" oor:op="replace">
<prop oor:name="Command"> <prop oor:name="Command">
<value>.uno:FontColor</value> <value>.uno:FontColor</value>
</prop> </prop>
<prop oor:name="Module"> <prop oor:name="Module">
<value>com.sun.star.report.ReportDefinition</value> <value/>
</prop> </prop>
<prop oor:name="Controller"> <prop oor:name="Controller">
<value>com.sun.star.report.ReportToolboxController</value> <value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop> </prop>
</node> </node>
<node oor:name="c5" oor:op="replace" install:module="reportbuilder"> <node oor:name="BackgroundColorToolBox" oor:op="replace">
<prop oor:name="Command"> <prop oor:name="Command">
<value>.uno:BackgroundColor</value> <value>.uno:BackgroundColor</value>
</prop> </prop>
<prop oor:name="Module"> <prop oor:name="Module">
<value>com.sun.star.report.ReportDefinition</value> <value/>
</prop> </prop>
<prop oor:name="Controller"> <prop oor:name="Controller">
<value>com.sun.star.report.ReportToolboxController</value> <value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop> </prop>
</node> </node>
<node oor:name="c6" oor:op="replace" install:module="reportbuilder"> <node oor:name="ColorToolBox" oor:op="replace">
<prop oor:name="Command"> <prop oor:name="Command">
<value>.uno:Color</value> <value>.uno:Color</value>
</prop> </prop>
<prop oor:name="Module"> <prop oor:name="Module">
<value>com.sun.star.report.ReportDefinition</value> <value/>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop>
</node>
<node oor:name="BackColorToolBox" oor:op="replace">
<prop oor:name="Command">
<value>.uno:BackColor</value>
</prop>
<prop oor:name="Module">
<value/>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop>
</node>
<node oor:name="CharBackColorToolBox" oor:op="replace">
<prop oor:name="Command">
<value>.uno:CharBackColor</value>
</prop>
<prop oor:name="Module">
<value/>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop>
</node>
<node oor:name="Extrusion3DColorToolBox" oor:op="replace">
<prop oor:name="Command">
<value>.uno:Extrusion3DColor</value>
</prop>
<prop oor:name="Module">
<value/>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop>
</node>
<node oor:name="XLineColorToolBox" oor:op="replace">
<prop oor:name="Command">
<value>.uno:XLineColor</value>
</prop>
<prop oor:name="Module">
<value/>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop>
</node>
<node oor:name="FillColorToolBox" oor:op="replace">
<prop oor:name="Command">
<value>.uno:FillColor</value>
</prop>
<prop oor:name="Module">
<value/>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop>
</node>
<node oor:name="FrameLineColorToolBox" oor:op="replace">
<prop oor:name="Command">
<value>.uno:FrameLineColor</value>
</prop>
<prop oor:name="Module">
<value/>
</prop> </prop>
<prop oor:name="Controller"> <prop oor:name="Controller">
<value>com.sun.star.report.ReportToolboxController</value> <value>com.sun.star.comp.svx.ColorToolBoxControl</value>
</prop> </prop>
</node> </node>
<node oor:name="FontNameToolBox" oor:op="replace"> <node oor:name="FontNameToolBox" oor:op="replace">
......
...@@ -238,7 +238,8 @@ IMPL_LINK(Condition, DropdownClick, ToolBox*, pToolBox, void) ...@@ -238,7 +238,8 @@ IMPL_LINK(Condition, DropdownClick, ToolBox*, pToolBox, void)
pToolBox, pToolBox,
m_aColorWrapper); m_aColorWrapper);
m_pColorFloat->StartPopupMode(pToolBox, FloatWinPopupFlags::GrabFocus); m_pColorFloat->EnableDocking();
vcl::Window::GetDockingManager()->StartPopupMode(pToolBox, m_pColorFloat, FloatWinPopupFlags::GrabFocus);
} }
IMPL_LINK_NOARG( Condition, OnFormatAction, ToolBox*, void ) IMPL_LINK_NOARG( Condition, OnFormatAction, ToolBox*, void )
......
...@@ -157,13 +157,7 @@ void ScDLL::Init() ...@@ -157,13 +157,7 @@ void ScDLL::Init()
SvxFillToolBoxControl ::RegisterControl(0, pMod); SvxFillToolBoxControl ::RegisterControl(0, pMod);
SvxLineStyleToolBoxControl ::RegisterControl(0, pMod); SvxLineStyleToolBoxControl ::RegisterControl(0, pMod);
SvxLineWidthToolBoxControl ::RegisterControl(0, pMod); SvxLineWidthToolBoxControl ::RegisterControl(0, pMod);
SvxColorToolBoxControl ::RegisterControl(SID_ATTR_LINE_COLOR, pMod);
SvxColorToolBoxControl ::RegisterControl(SID_ATTR_FILL_COLOR, pMod);
SvxStyleToolBoxControl ::RegisterControl(SID_STYLE_APPLY, pMod); SvxStyleToolBoxControl ::RegisterControl(SID_STYLE_APPLY, pMod);
SvxColorToolBoxControl ::RegisterControl(SID_ATTR_CHAR_COLOR, pMod);
SvxColorToolBoxControl ::RegisterControl(SID_BACKGROUND_COLOR, pMod);
SvxColorToolBoxControl ::RegisterControl(SID_ATTR_CHAR_BACK_COLOR, pMod);
SvxColorToolBoxControl ::RegisterControl(SID_FRAME_LINECOLOR, pMod);
SvxClipBoardControl ::RegisterControl(SID_PASTE, pMod ); SvxClipBoardControl ::RegisterControl(SID_PASTE, pMod );
SvxUndoRedoControl ::RegisterControl(SID_UNDO, pMod ); SvxUndoRedoControl ::RegisterControl(SID_UNDO, pMod );
SvxUndoRedoControl ::RegisterControl(SID_REDO, pMod ); SvxUndoRedoControl ::RegisterControl(SID_REDO, pMod );
...@@ -208,9 +202,6 @@ void ScDLL::Init() ...@@ -208,9 +202,6 @@ void ScDLL::Init()
SvxPosSizeStatusBarControl ::RegisterControl(SID_ATTR_SIZE, pMod); SvxPosSizeStatusBarControl ::RegisterControl(SID_ATTR_SIZE, pMod);
// CustomShape extrusion controller
SvxColorToolBoxControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
// Child Windows // Child Windows
ScInputWindowWrapper ::RegisterChildWindow(true, pMod, SfxChildWindowFlags::TASK|SfxChildWindowFlags::FORCEDOCK); ScInputWindowWrapper ::RegisterChildWindow(true, pMod, SfxChildWindowFlags::TASK|SfxChildWindowFlags::FORCEDOCK);
......
...@@ -181,12 +181,8 @@ void SdDLL::RegisterControllers(SdModule* pMod) ...@@ -181,12 +181,8 @@ void SdDLL::RegisterControllers(SdModule* pMod)
SvxFillToolBoxControl::RegisterControl(0, pMod); SvxFillToolBoxControl::RegisterControl(0, pMod);
SvxLineStyleToolBoxControl::RegisterControl(0, pMod); SvxLineStyleToolBoxControl::RegisterControl(0, pMod);
SvxLineWidthToolBoxControl::RegisterControl(0, pMod); SvxLineWidthToolBoxControl::RegisterControl(0, pMod);
SvxColorToolBoxControl::RegisterControl(SID_ATTR_LINE_COLOR, pMod);
SvxColorToolBoxControl::RegisterControl(SID_ATTR_FILL_COLOR, pMod);
SvxStyleToolBoxControl::RegisterControl(0, pMod); SvxStyleToolBoxControl::RegisterControl(0, pMod);
SvxColorToolBoxControl::RegisterControl( SID_ATTR_CHAR_COLOR, pMod );
SvxColorToolBoxControl::RegisterControl( SID_ATTR_CHAR_BACK_COLOR, pMod );
SvxGrafModeToolBoxControl::RegisterControl( SID_ATTR_GRAF_MODE, pMod ); SvxGrafModeToolBoxControl::RegisterControl( SID_ATTR_GRAF_MODE, pMod );
SvxGrafRedToolBoxControl::RegisterControl( SID_ATTR_GRAF_RED, pMod ); SvxGrafRedToolBoxControl::RegisterControl( SID_ATTR_GRAF_RED, pMod );
...@@ -221,7 +217,6 @@ void SdDLL::RegisterControllers(SdModule* pMod) ...@@ -221,7 +217,6 @@ void SdDLL::RegisterControllers(SdModule* pMod)
SvxClipBoardControl::RegisterControl( SID_PASTE, pMod ); SvxClipBoardControl::RegisterControl( SID_PASTE, pMod );
SvxClipBoardControl::RegisterControl( SID_PASTE_UNFORMATTED, pMod ); SvxClipBoardControl::RegisterControl( SID_PASTE_UNFORMATTED, pMod );
SvxColorToolBoxControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
svx::ParaLineSpacingPopup::RegisterControl(SID_ATTR_PARA_LINESPACE, pMod); svx::ParaLineSpacingPopup::RegisterControl(SID_ATTR_PARA_LINESPACE, pMod);
svx::TextCharacterSpacingPopup::RegisterControl(SID_ATTR_CHAR_KERNING, pMod); svx::TextCharacterSpacingPopup::RegisterControl(SID_ATTR_CHAR_KERNING, pMod);
svx::TextUnderlinePopup::RegisterControl(SID_ATTR_CHAR_UNDERLINE, pMod); svx::TextUnderlinePopup::RegisterControl(SID_ATTR_CHAR_UNDERLINE, pMod);
...@@ -230,7 +225,6 @@ void SdDLL::RegisterControllers(SdModule* pMod) ...@@ -230,7 +225,6 @@ void SdDLL::RegisterControllers(SdModule* pMod)
XmlSecStatusBarControl::RegisterControl( SID_SIGNATURE, pMod ); XmlSecStatusBarControl::RegisterControl( SID_SIGNATURE, pMod );
SdTemplateControl::RegisterControl( SID_STATUS_LAYOUT, pMod ); SdTemplateControl::RegisterControl( SID_STATUS_LAYOUT, pMod );
SvxTableToolBoxControl::RegisterControl(SID_INSERT_TABLE, pMod ); SvxTableToolBoxControl::RegisterControl(SID_INSERT_TABLE, pMod );
SvxColorToolBoxControl::RegisterControl(SID_FRAME_LINECOLOR, pMod );
SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod ); SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod );
EmojiPopup::RegisterControl(SID_EMOJI_CONTROL, pMod ); EmojiPopup::RegisterControl(SID_EMOJI_CONTROL, pMod );
......
...@@ -1427,6 +1427,19 @@ void SAL_CALL ToolbarPopupStatusListener::statusChanged( const css::frame::Featu ...@@ -1427,6 +1427,19 @@ void SAL_CALL ToolbarPopupStatusListener::statusChanged( const css::frame::Featu
ToolbarPopup::ToolbarPopup( const css::uno::Reference<css::frame::XFrame>& rFrame, vcl::Window* pParentWindow, WinBits nBits ) ToolbarPopup::ToolbarPopup( const css::uno::Reference<css::frame::XFrame>& rFrame, vcl::Window* pParentWindow, WinBits nBits )
: DockingWindow(pParentWindow, nBits) : DockingWindow(pParentWindow, nBits)
, mxFrame( rFrame ) , mxFrame( rFrame )
{
init();
}
ToolbarPopup::ToolbarPopup( const css::uno::Reference<css::frame::XFrame>& rFrame, vcl::Window* pParentWindow,
const OString& rID, const OUString& rUIXMLDescription )
: DockingWindow(pParentWindow, rID, rUIXMLDescription, rFrame)
, mxFrame( rFrame )
{
init();
}
void ToolbarPopup::init()
{ {
vcl::Window* pWindow = GetTopMostParentSystemWindow( this ); vcl::Window* pWindow = GetTopMostParentSystemWindow( this );
if ( pWindow ) if ( pWindow )
......
...@@ -27,10 +27,7 @@ ...@@ -27,10 +27,7 @@
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="border_width">4</property> <property name="border_width">4</property>
<property name="resizable">False</property> <property name="resizable">False</property>
<property name="destroy_with_parent">True</property> <property name="type_hint">dock</property>
<property name="type_hint">popup-menu</property>
<property name="skip_pager_hint">True</property>
<property name="deletable">False</property>
<child> <child>
<object class="GtkBox" id="box1"> <object class="GtkBox" id="box1">
<property name="visible">True</property> <property name="visible">True</property>
......
...@@ -44,6 +44,10 @@ ...@@ -44,6 +44,10 @@
constructor="com_sun_star_comp_svx_FrameToolBoxControl_get_implementation"> constructor="com_sun_star_comp_svx_FrameToolBoxControl_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/> <service name="com.sun.star.frame.ToolbarController"/>
</implementation> </implementation>
<implementation name="com.sun.star.comp.svx.ColorToolBoxControl"
constructor="com_sun_star_comp_svx_ColorToolBoxControl_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/>
</implementation>
<implementation name="com.sun.star.comp.svx.CurrencyToolBoxControl" <implementation name="com.sun.star.comp.svx.CurrencyToolBoxControl"
constructor="com_sun_star_comp_svx_CurrencyToolBoxControl_get_implementation"> constructor="com_sun_star_comp_svx_CurrencyToolBoxControl_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/> <service name="com.sun.star.frame.ToolbarController"/>
......
...@@ -305,7 +305,6 @@ void SwDLL::RegisterControls() ...@@ -305,7 +305,6 @@ void SwDLL::RegisterControls()
PageOrientationPopup::RegisterControl(SID_ATTR_PAGE_ORIENTATION, pMod); PageOrientationPopup::RegisterControl(SID_ATTR_PAGE_ORIENTATION, pMod);
PageColumnPopup::RegisterControl(SID_ATTR_PAGE_COLUMN, pMod); PageColumnPopup::RegisterControl(SID_ATTR_PAGE_COLUMN, pMod);
PageSizePopup::RegisterControl(SID_ATTR_PAGE_SIZE, pMod); PageSizePopup::RegisterControl(SID_ATTR_PAGE_SIZE, pMod);
SvxColorToolBoxControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
SvxClipBoardControl::RegisterControl(SID_PASTE, pMod ); SvxClipBoardControl::RegisterControl(SID_PASTE, pMod );
SvxUndoRedoControl::RegisterControl(SID_UNDO, pMod ); SvxUndoRedoControl::RegisterControl(SID_UNDO, pMod );
...@@ -315,16 +314,8 @@ void SwDLL::RegisterControls() ...@@ -315,16 +314,8 @@ void SwDLL::RegisterControls()
SvxFillToolBoxControl::RegisterControl(SID_ATTR_FILL_STYLE, pMod ); SvxFillToolBoxControl::RegisterControl(SID_ATTR_FILL_STYLE, pMod );
SvxLineStyleToolBoxControl::RegisterControl(SID_ATTR_LINE_STYLE, pMod ); SvxLineStyleToolBoxControl::RegisterControl(SID_ATTR_LINE_STYLE, pMod );
SvxLineWidthToolBoxControl::RegisterControl(SID_ATTR_LINE_WIDTH, pMod ); SvxLineWidthToolBoxControl::RegisterControl(SID_ATTR_LINE_WIDTH, pMod );
SvxColorToolBoxControl::RegisterControl(SID_ATTR_LINE_COLOR, pMod );
SvxColorToolBoxControl::RegisterControl(SID_ATTR_FILL_COLOR, pMod);
SvxColorToolBoxControl::RegisterControl(SID_ATTR_CHAR_BACK_COLOR, pMod);
SvxColorToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR, pMod );
SvxColorToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR2, pMod );
SvxColorToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR_BACKGROUND, pMod );
SvxStyleToolBoxControl::RegisterControl(SID_STYLE_APPLY, pMod ); SvxStyleToolBoxControl::RegisterControl(SID_STYLE_APPLY, pMod );
SvxColorToolBoxControl::RegisterControl( SID_BACKGROUND_COLOR, pMod );
SvxColorToolBoxControl::RegisterControl(SID_FRAME_LINECOLOR, pMod );
SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME_INTERACT, pMod ); SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME_INTERACT, pMod );
SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME, pMod ); SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME, pMod );
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
#include <vcl/decoview.hxx> #include <vcl/decoview.hxx>
#include <vcl/dockwin.hxx>
#include <vcl/event.hxx> #include <vcl/event.hxx>
#include <vcl/floatwin.hxx> #include <vcl/floatwin.hxx>
#include <vcl/menu.hxx> #include <vcl/menu.hxx>
...@@ -55,7 +56,14 @@ void MenuButton::ExecuteMenu() ...@@ -55,7 +56,14 @@ void MenuButton::ExecuteMenu()
{ {
Point aPos(GetParent()->OutputToScreenPixel(GetPosPixel())); Point aPos(GetParent()->OutputToScreenPixel(GetPosPixel()));
tools::Rectangle aRect(aPos, aSize ); 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); SetPressed(false);
if (mnCurItemId) if (mnCurItemId)
...@@ -170,12 +178,12 @@ void MenuButton::SetPopupMenu(PopupMenu* pNewMenu) ...@@ -170,12 +178,12 @@ void MenuButton::SetPopupMenu(PopupMenu* pNewMenu)
mpMenu = pNewMenu; mpMenu = pNewMenu;
} }
void MenuButton::SetPopover(FloatingWindow* pFloatingWindow) void MenuButton::SetPopover(Window* pWindow)
{ {
if (pFloatingWindow == mpFloatingWindow) if (pWindow == mpFloatingWindow)
return; return;
mpFloatingWindow = pFloatingWindow; mpFloatingWindow = pWindow;
} }
//class MenuToggleButton ---------------------------------------------------- //class MenuToggleButton ----------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment