include/svx/colorwindow.hxx | 29 +++++++++++++++- include/svx/dlgctrl.hxx | 61 --------------------------------- svx/source/tbxctrls/linectrl.cxx | 70 +++++++++++++++++---------------------- svx/source/tbxctrls/tbcontrl.cxx | 2 - 4 files changed, 60 insertions(+), 102 deletions(-)
New commits: commit 6e249594f27c75b9b785da4e17b79a10d3b5265f Author: Caolán McNamara <[email protected]> AuthorDate: Tue Jan 21 14:39:43 2020 +0100 Commit: Caolán McNamara <[email protected]> CommitDate: Tue Jan 21 21:05:41 2020 +0100 Revert "Related: tdf#130035 let SvxLineEndWindow have a menubutton parent" This reverts commit 08e633d777f1d2cf11a93ccb55f231d084f3220c. Reason for revert: unnecessary if we use the toolbar in the sidebar without bringing any menubutton into it Change-Id: I8392d01415af2f5e60aa70abe52e4809f52621fa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87142 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/include/svx/colorwindow.hxx b/include/svx/colorwindow.hxx index e87b60141160..8a2f42751dfd 100644 --- a/include/svx/colorwindow.hxx +++ b/include/svx/colorwindow.hxx @@ -22,7 +22,6 @@ #include <svtools/toolbarmenu.hxx> #include <rtl/ustring.hxx> -#include <svx/dlgctrl.hxx> #include <svx/SvxColorValueSet.hxx> #include <svx/Palette.hxx> #include <vcl/lstbox.hxx> @@ -110,6 +109,34 @@ public: class SvxColorToolBoxControl; +class SVX_DLLPUBLIC MenuOrToolMenuButton +{ +private: + // either + weld::MenuButton* m_pMenuButton; + // or + weld::Toolbar* m_pToolbar; + OString m_aIdent; + // or + SvxColorToolBoxControl* m_pControl; + VclPtr<ToolBox> m_xToolBox; + sal_uInt16 m_nId; +public: + MenuOrToolMenuButton(weld::MenuButton* pMenuButton); + MenuOrToolMenuButton(weld::Toolbar* pToolbar, const OString& rIdent); + MenuOrToolMenuButton(SvxColorToolBoxControl* pControl, ToolBox* pToolbar, sal_uInt16 nId); + ~MenuOrToolMenuButton(); + + MenuOrToolMenuButton(MenuOrToolMenuButton const &) = default; + MenuOrToolMenuButton(MenuOrToolMenuButton &&) = default; + MenuOrToolMenuButton & operator =(MenuOrToolMenuButton const &) = default; + MenuOrToolMenuButton & operator =(MenuOrToolMenuButton &&) = default; + + bool get_active() const; + void set_inactive() const; + weld::Widget* get_widget() const; +}; + class SVX_DLLPUBLIC ColorWindow final : public WeldToolbarPopup { private: diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx index 88f6b0025740..eaa31a5d0e3f 100644 --- a/include/svx/dlgctrl.hxx +++ b/include/svx/dlgctrl.hxx @@ -20,7 +20,6 @@ #define INCLUDED_SVX_DLGCTRL_HXX #include <sfx2/tabdlg.hxx> -#include <svtools/toolbarmenu.hxx> #include <svx/svxdllapi.h> #include <svx/rectenum.hxx> #include <vcl/customweld.hxx> @@ -37,13 +36,6 @@ namespace com { namespace sun { namespace star { namespace awt { struct Point; } } } } -namespace svt { - class PopupWindowController; -} - -class SvtValueSet; -class ToolBox; - /************************************************************************* |* Derived from SfxTabPage for being able to get notified through the |* virtual method from the control. @@ -219,34 +211,6 @@ public: virtual void LoseFocus() override; }; -class SVX_DLLPUBLIC MenuOrToolMenuButton -{ -private: - // either - weld::MenuButton* m_pMenuButton; - // or - weld::Toolbar* m_pToolbar; - OString m_aIdent; - // or - svt::PopupWindowController* m_pControl; - VclPtr<ToolBox> m_xToolBox; - sal_uInt16 m_nId; -public: - MenuOrToolMenuButton(weld::MenuButton* pMenuButton); - MenuOrToolMenuButton(weld::Toolbar* pToolbar, const OString& rIdent); - MenuOrToolMenuButton(svt::PopupWindowController* pControl, ToolBox* pToolbar, sal_uInt16 nId); - ~MenuOrToolMenuButton(); - - MenuOrToolMenuButton(MenuOrToolMenuButton const &) = default; - MenuOrToolMenuButton(MenuOrToolMenuButton &&) = default; - MenuOrToolMenuButton & operator =(MenuOrToolMenuButton const &) = default; - MenuOrToolMenuButton & operator =(MenuOrToolMenuButton &&) = default; - - bool get_active() const; - void set_inactive() const; - weld::Widget* get_widget() const; -}; - /************************************************************************/ class SAL_WARN_UNUSED SVX_DLLPUBLIC FillTypeLB : public ListBox @@ -324,31 +288,6 @@ public: bool get_sensitive() const { return m_xControl->get_sensitive(); } }; -typedef std::function<void(const css::uno::Sequence<css::beans::PropertyValue>&)> LineEndSelectFunction; - -class SvxLineEndWindow final : public WeldToolbarPopup -{ -private: - XLineEndListRef mpLineEndList; - MenuOrToolMenuButton maMenuButton; - LineEndSelectFunction maLineEndSelectFunction; - std::unique_ptr<SvtValueSet> mxLineEndSet; - std::unique_ptr<weld::CustomWeld> mxLineEndSetWin; - sal_uInt16 mnLines; - Size maBmpSize; - - DECL_LINK(SelectHdl, SvtValueSet*, void); - void FillValueSet(); - void SetSize(); - - virtual void GrabFocus() override; - -public: - SvxLineEndWindow(const css::uno::Reference< css::frame::XFrame >& rFrame, weld::Window* pParent, - const MenuOrToolMenuButton &rMenuButton, const LineEndSelectFunction& rLineEndSelectFunction); - virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent ) override; -}; - class SdrObject; class SdrPathObj; class SdrModel; diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx index bb4ef331de16..80c36beb55d5 100644 --- a/svx/source/tbxctrls/linectrl.cxx +++ b/svx/source/tbxctrls/linectrl.cxx @@ -19,7 +19,6 @@ #include <string> -#include <vcl/svapp.hxx> #include <vcl/toolbox.hxx> #include <sfx2/app.hxx> #include <sfx2/dispatch.hxx> @@ -264,20 +263,39 @@ public: private: virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override; virtual VclPtr<vcl::Window> createVclPopupWindow( vcl::Window* pParent ) override; +}; - void dispatch(const Sequence<PropertyValue>& rArgs); +class SvxLineEndWindow final : public WeldToolbarPopup +{ +private: + XLineEndListRef mpLineEndList; + rtl::Reference<SvxLineEndToolBoxControl> mxControl; + std::unique_ptr<SvtValueSet> mxLineEndSet; + std::unique_ptr<weld::CustomWeld> mxLineEndSetWin; + sal_uInt16 mnLines; + Size maBmpSize; + + DECL_LINK( SelectHdl, SvtValueSet*, void ); + void FillValueSet(); + void SetSize(); + + virtual void GrabFocus() override + { + mxLineEndSet->GrabFocus(); + } + +public: + SvxLineEndWindow(SvxLineEndToolBoxControl* pControl, weld::Widget* pParent); + virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent ) override; }; } static constexpr sal_uInt16 gnCols = 2; -SvxLineEndWindow::SvxLineEndWindow(const Reference<XFrame>& rFrame, weld::Window* pParent, - const MenuOrToolMenuButton &rMenuButton, - const LineEndSelectFunction& rLineEndSelectFunction) - : WeldToolbarPopup(rFrame, pParent, "svx/ui/floatinglineend.ui", "FloatingLineEnd") - , maMenuButton(rMenuButton) - , maLineEndSelectFunction(rLineEndSelectFunction) +SvxLineEndWindow::SvxLineEndWindow(SvxLineEndToolBoxControl* pControl, weld::Widget* pParent) + : WeldToolbarPopup(pControl->getFrameInterface(), pParent, "svx/ui/floatinglineend.ui", "FloatingLineEnd") + , mxControl(pControl) , mxLineEndSet(new SvtValueSet(m_xBuilder->weld_scrolled_window("valuesetwin"))) , mxLineEndSetWin(new weld::CustomWeld(*m_xBuilder, "valueset", *mxLineEndSet)) , mnLines(12) @@ -304,11 +322,6 @@ SvxLineEndWindow::SvxLineEndWindow(const Reference<XFrame>& rFrame, weld::Window AddStatusListener( ".uno:LineEndListState"); } -void SvxLineEndWindow::GrabFocus() -{ - mxLineEndSet->GrabFocus(); -} - IMPL_LINK_NOARG(SvxLineEndWindow, SelectHdl, SvtValueSet*, void) { std::unique_ptr<XLineEndItem> pLineEndItem; @@ -355,9 +368,9 @@ IMPL_LINK_NOARG(SvxLineEndWindow, SelectHdl, SvtValueSet*, void) while in Dispatch()), accessing members will crash in this case. */ mxLineEndSet->SetNoSelection(); - maLineEndSelectFunction(aArgs); + mxControl->dispatchCommand(mxControl->getCommandURL(), aArgs); - maMenuButton.set_inactive(); + mxControl->EndPopupMode(); } void SvxLineEndWindow::FillValueSet() @@ -465,11 +478,6 @@ void SAL_CALL SvxLineEndToolBoxControl::execute(sal_Int16 /*KeyModifier*/) } } -void SvxLineEndToolBoxControl::dispatch(const Sequence<PropertyValue>& rArgs) -{ - dispatchCommand(getCommandURL(), rArgs); -} - void SvxLineEndToolBoxControl::initialize( const css::uno::Sequence<css::uno::Any>& rArguments ) { svt::PopupWindowController::initialize( rArguments ); @@ -488,29 +496,13 @@ void SvxLineEndToolBoxControl::initialize( const css::uno::Sequence<css::uno::An std::unique_ptr<WeldToolbarPopup> SvxLineEndToolBoxControl::weldPopupWindow() { - const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow(); - weld::Window* pParentFrame = Application::GetFrameWeld(xParent); - - const OString aId(m_aCommandURL.toUtf8()); - return std::make_unique<SvxLineEndWindow>(m_xFrame, pParentFrame, - MenuOrToolMenuButton(m_pToolbar, aId), - std::bind(&SvxLineEndToolBoxControl::dispatch, this, std::placeholders::_1)); + return std::make_unique<SvxLineEndWindow>(this, m_pToolbar); } VclPtr<vcl::Window> SvxLineEndToolBoxControl::createVclPopupWindow( vcl::Window* pParent ) { - ToolBox* pToolBox = nullptr; - sal_uInt16 nId = 0; - if (!getToolboxId(nId, &pToolBox)) - return nullptr; - - const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow(); - weld::Window* pParentFrame = Application::GetFrameWeld(xParent); - - mxInterimPopover = VclPtr<InterimToolbarPopup>::Create(m_xFrame, pParent, - std::make_unique<SvxLineEndWindow>(m_xFrame, pParentFrame, - MenuOrToolMenuButton(this, pToolBox, nId), - std::bind(&SvxLineEndToolBoxControl::dispatch, this, std::placeholders::_1))); + mxInterimPopover = VclPtr<InterimToolbarPopup>::Create(getFrameInterface(), pParent, + std::make_unique<SvxLineEndWindow>(this, pParent->GetFrameWeld())); mxInterimPopover->Show(); diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 129e2b90c82b..fcd99c90d8fc 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -4363,7 +4363,7 @@ MenuOrToolMenuButton::MenuOrToolMenuButton(weld::Toolbar* pToolbar, const OStrin { } -MenuOrToolMenuButton::MenuOrToolMenuButton(svt::PopupWindowController* pControl, ToolBox* pToolbar, sal_uInt16 nId) +MenuOrToolMenuButton::MenuOrToolMenuButton(SvxColorToolBoxControl* pControl, ToolBox* pToolbar, sal_uInt16 nId) : m_pMenuButton(nullptr) , m_pToolbar(nullptr) , m_pControl(pControl) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
