diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-01-13 13:20:45 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-01-13 18:28:59 +0100 |
commit | c9ba69cdfaaf19695fc8e40ba7af1d06490a123f (patch) | |
tree | 4f78b0543befffdbcec349ba6c6be4d569925bd2 | |
parent | 4e12a674f51e898cf11af64b01e8da8468cec401 (diff) |
rework TextCharacterSpacingPopup to be a PopupWindowController
Change-Id: I3db8f93b99157f7ee8d6095f7dfc5c2b2e6890e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86690
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | include/svx/TextCharacterSpacingPopup.hxx | 18 | ||||
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu | 11 | ||||
-rw-r--r-- | sc/source/ui/app/scdll.cxx | 1 | ||||
-rw-r--r-- | sd/source/ui/app/sddll.cxx | 1 | ||||
-rw-r--r-- | svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx | 3 | ||||
-rw-r--r-- | svx/source/sidebar/text/TextCharacterSpacingControl.cxx | 13 | ||||
-rw-r--r-- | svx/source/sidebar/text/TextCharacterSpacingControl.hxx | 10 | ||||
-rw-r--r-- | svx/source/sidebar/text/TextCharacterSpacingPopup.cxx | 37 | ||||
-rw-r--r-- | svx/util/svx.component | 4 | ||||
-rw-r--r-- | sw/source/uibase/app/swmodule.cxx | 1 |
10 files changed, 68 insertions, 31 deletions
diff --git a/include/svx/TextCharacterSpacingPopup.hxx b/include/svx/TextCharacterSpacingPopup.hxx index d698cfa82bf4..1efc2d9a170f 100644 --- a/include/svx/TextCharacterSpacingPopup.hxx +++ b/include/svx/TextCharacterSpacingPopup.hxx @@ -19,20 +19,26 @@ #ifndef INCLUDED_SVX_TEXTCHARACTERSPACINGPOPUP_HXX #define INCLUDED_SVX_TEXTCHARACTERSPACINGPOPUP_HXX -#include <sfx2/tbxctrl.hxx> +#include <svtools/popupwindowcontroller.hxx> #include <svx/svxdllapi.h> namespace svx { -class SVX_DLLPUBLIC TextCharacterSpacingPopup final : public SfxToolBoxControl +class SVX_DLLPUBLIC TextCharacterSpacingPopup final : public svt::PopupWindowController { public: - SFX_DECL_TOOLBOX_CONTROL(); - - TextCharacterSpacingPopup(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx); + TextCharacterSpacingPopup(const css::uno::Reference<css::uno::XComponentContext>& rContext); virtual ~TextCharacterSpacingPopup() override; - virtual VclPtr<SfxPopupWindow> CreatePopupWindow() override; + using svt::ToolboxController::createPopupWindow; + virtual VclPtr<vcl::Window> createPopupWindow( vcl::Window* pParent ) override; + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; + + // XInitialization + virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& rArguments ) override; }; } // end of namespace svx diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu index c9870cec546c..e89903cd0149 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu @@ -1283,6 +1283,17 @@ <value>com.sun.star.comp.svx.LineSpacingToolBoxControl</value> </prop> </node> + <node oor:name="CharacterSpacingToolBoxControl" oor:op="replace"> + <prop oor:name="Command"> + <value>.uno:Spacing</value> + </prop> + <prop oor:name="Module"> + <value/> + </prop> + <prop oor:name="Controller"> + <value>com.sun.star.comp.svx.CharacterSpacingToolBoxControl</value> + </prop> + </node> <node oor:name="BorderStyleToolBoxControl" oor:op="replace"> <prop oor:name="Command"> <value>.uno:SetBorderStyle</value> diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx index 4df0bf295e80..07ae6ae2894b 100644 --- a/sc/source/ui/app/scdll.cxx +++ b/sc/source/ui/app/scdll.cxx @@ -153,7 +153,6 @@ void ScDLL::Init() SvxClipBoardControl ::RegisterControl(SID_PASTE_UNFORMATTED, pMod ); SvxUndoRedoControl ::RegisterControl(SID_UNDO, pMod ); SvxUndoRedoControl ::RegisterControl(SID_REDO, pMod ); - svx::TextCharacterSpacingPopup ::RegisterControl(SID_ATTR_CHAR_KERNING, pMod ); svx::TextUnderlinePopup ::RegisterControl(SID_ATTR_CHAR_UNDERLINE, pMod ); svx::FormatPaintBrushToolBoxControl::RegisterControl(SID_FORMATPAINTBRUSH, pMod ); sc::ScNumberFormatControl ::RegisterControl(SID_NUMBER_TYPE_FORMAT, pMod ); diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx index 43f40d8df7bf..281e96ef1831 100644 --- a/sd/source/ui/app/sddll.cxx +++ b/sd/source/ui/app/sddll.cxx @@ -215,7 +215,6 @@ void SdDLL::RegisterControllers(SdModule* pMod) SvxClipBoardControl::RegisterControl( SID_PASTE, pMod ); SvxClipBoardControl::RegisterControl( SID_PASTE_UNFORMATTED, pMod ); - svx::TextCharacterSpacingPopup::RegisterControl(SID_ATTR_CHAR_KERNING, pMod); svx::TextUnderlinePopup::RegisterControl(SID_ATTR_CHAR_UNDERLINE, pMod); #if HAVE_FEATURE_AVMEDIA diff --git a/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx b/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx index 93ced9fece15..13d662bc9763 100644 --- a/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx +++ b/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx @@ -27,9 +27,6 @@ #include <sfx2/sfxsids.hrc> #include <sfx2/viewfrm.hxx> #include <svtools/unitconv.hxx> -#include <vcl/button.hxx> -#include <vcl/fixed.hxx> -#include <vcl/lstbox.hxx> #include <svl/itempool.hxx> diff --git a/svx/source/sidebar/text/TextCharacterSpacingControl.cxx b/svx/source/sidebar/text/TextCharacterSpacingControl.cxx index 3084b4527686..3de287aff0f9 100644 --- a/svx/source/sidebar/text/TextCharacterSpacingControl.cxx +++ b/svx/source/sidebar/text/TextCharacterSpacingControl.cxx @@ -26,6 +26,7 @@ #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/sidebar/Theme.hxx> +#include <svx/TextCharacterSpacingPopup.hxx> #include <vcl/button.hxx> #include <vcl/settings.hxx> #include <svl/itempool.hxx> @@ -41,11 +42,11 @@ namespace svx { -TextCharacterSpacingControl::TextCharacterSpacingControl(sal_uInt16 nId, vcl::Window* pParent) - : SfxPopupWindow(nId, pParent, "TextCharacterSpacingControl", "svx/ui/textcharacterspacingcontrol.ui") -, mnId(nId) -, mnCustomKern(0) -, mnLastCus(SPACING_NOCUSTOM) +TextCharacterSpacingControl::TextCharacterSpacingControl(TextCharacterSpacingPopup* pControl, vcl::Window* pParent) + : ToolbarPopup(pControl->getFrameInterface(), pParent, "TextCharacterSpacingControl", "svx/ui/textcharacterspacingcontrol.ui") + , mnId(SID_ATTR_CHAR_KERNING) + , mnCustomKern(0) + , mnLastCus(SPACING_NOCUSTOM) { get(maEditKerning, "kerning"); @@ -94,7 +95,7 @@ void TextCharacterSpacingControl::dispose() maLoose.clear(); maLastCustom.clear(); - SfxPopupWindow::dispose(); + ToolbarPopup::dispose(); } void TextCharacterSpacingControl::Initialize() diff --git a/svx/source/sidebar/text/TextCharacterSpacingControl.hxx b/svx/source/sidebar/text/TextCharacterSpacingControl.hxx index 6c3a649edf12..d4f79cdbbbe7 100644 --- a/svx/source/sidebar/text/TextCharacterSpacingControl.hxx +++ b/svx/source/sidebar/text/TextCharacterSpacingControl.hxx @@ -22,7 +22,7 @@ #include <sfx2/bindings.hxx> #include <vcl/fixed.hxx> #include <vcl/field.hxx> -#include <sfx2/tbxctrl.hxx> +#include <svtools/toolbarmenu.hxx> namespace svx { #define SPACING_NOCUSTOM 0 @@ -31,10 +31,12 @@ namespace svx { #define SIDEBAR_SPACING_GLOBAL_VALUE "PopupPanel_Spacing" -class TextCharacterSpacingControl : public SfxPopupWindow +class TextCharacterSpacingPopup; + +class TextCharacterSpacingControl final : public svtools::ToolbarPopup { public: - explicit TextCharacterSpacingControl(sal_uInt16 nId, vcl::Window* pParent); + explicit TextCharacterSpacingControl(TextCharacterSpacingPopup* pControl, vcl::Window* pParent); virtual ~TextCharacterSpacingControl() override; virtual void dispose() override; @@ -48,7 +50,7 @@ private: VclPtr<PushButton> maLoose; VclPtr<PushButton> maLastCustom; - sal_uInt16 const mnId; + sal_uInt16 mnId; long mnCustomKern; short mnLastCus; diff --git a/svx/source/sidebar/text/TextCharacterSpacingPopup.cxx b/svx/source/sidebar/text/TextCharacterSpacingPopup.cxx index cdf0f99b8bb9..ea7104344f75 100644 --- a/svx/source/sidebar/text/TextCharacterSpacingPopup.cxx +++ b/svx/source/sidebar/text/TextCharacterSpacingPopup.cxx @@ -24,27 +24,46 @@ using namespace svx; -SFX_IMPL_TOOLBOX_CONTROL(TextCharacterSpacingPopup, SvxKerningItem); +TextCharacterSpacingPopup::TextCharacterSpacingPopup(const css::uno::Reference<css::uno::XComponentContext>& rContext) + : PopupWindowController(rContext, nullptr, OUString()) +{ +} -TextCharacterSpacingPopup::TextCharacterSpacingPopup(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx) - : SfxToolBoxControl(nSlotId, nId, rTbx) +void TextCharacterSpacingPopup::initialize( const css::uno::Sequence< css::uno::Any >& rArguments ) { - rTbx.SetItemBits(nId, ToolBoxItemBits::DROPDOWNONLY | rTbx.GetItemBits(nId)); + PopupWindowController::initialize(rArguments); + + ToolBox* pToolBox = nullptr; + sal_uInt16 nId = 0; + if (getToolboxId(nId, &pToolBox) && pToolBox->GetItemCommand(nId) == m_aCommandURL) + pToolBox->SetItemBits(nId, ToolBoxItemBits::DROPDOWNONLY | pToolBox->GetItemBits(nId)); } TextCharacterSpacingPopup::~TextCharacterSpacingPopup() { } -VclPtr<SfxPopupWindow> TextCharacterSpacingPopup::CreatePopupWindow() +VclPtr<vcl::Window> TextCharacterSpacingPopup::createPopupWindow(vcl::Window* pParent) { - VclPtr<TextCharacterSpacingControl> pControl = VclPtr<TextCharacterSpacingControl>::Create(GetSlotId(), &GetToolBox()); + return VclPtr<TextCharacterSpacingControl>::Create(this, pParent); +} - pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus); +OUString TextCharacterSpacingPopup::getImplementationName() +{ + return "com.sun.star.comp.svx.CharacterSpacingToolBoxControl"; +} - SetPopupWindow(pControl); +css::uno::Sequence<OUString> TextCharacterSpacingPopup::getSupportedServiceNames() +{ + return { "com.sun.star.frame.ToolbarController" }; +} - return pControl; +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * +com_sun_star_comp_svx_CharacterSpacingToolBoxControl_get_implementation( + css::uno::XComponentContext* rContext, + css::uno::Sequence<css::uno::Any> const & ) +{ + return cppu::acquire(new TextCharacterSpacingPopup(rContext)); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/util/svx.component b/svx/util/svx.component index 323126691b1e..a27f47063d68 100644 --- a/svx/util/svx.component +++ b/svx/util/svx.component @@ -108,4 +108,8 @@ constructor="com_sun_star_comp_svx_LineSpacingToolBoxControl_get_implementation"> <service name="com.sun.star.frame.ToolbarController"/> </implementation> + <implementation name="com.sun.star.comp.svx.CharacterSpacingToolBoxControl" + constructor="com_sun_star_comp_svx_CharacterSpacingToolBoxControl_get_implementation"> + <service name="com.sun.star.frame.ToolbarController"/> + </implementation> </component> diff --git a/sw/source/uibase/app/swmodule.cxx b/sw/source/uibase/app/swmodule.cxx index 49b96b4bf0cb..67c492e66192 100644 --- a/sw/source/uibase/app/swmodule.cxx +++ b/sw/source/uibase/app/swmodule.cxx @@ -274,7 +274,6 @@ void SwDLL::RegisterControls() SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod ); SvxTbxCtlDraw::RegisterControl(SID_TRACK_CHANGES_BAR, pMod ); SwTbxAutoTextCtrl::RegisterControl(FN_GLOSSARY_DLG, pMod ); - svx::TextCharacterSpacingPopup::RegisterControl(SID_ATTR_CHAR_KERNING, pMod); svx::TextUnderlinePopup::RegisterControl(SID_ATTR_CHAR_UNDERLINE, pMod); svx::ParaAboveSpacingControl::RegisterControl(SID_ATTR_PARA_ABOVESPACE, pMod); svx::ParaBelowSpacingControl::RegisterControl(SID_ATTR_PARA_BELOWSPACE, pMod); |