include/svx/ParaLineSpacingPopup.hxx | 18 ++-- officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu | 11 ++ sc/source/ui/app/scdll.cxx | 1 sd/source/ui/app/sddll.cxx | 1 svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx | 42 +--------- svx/source/sidebar/paragraph/ParaLineSpacingControl.hxx | 10 +- svx/source/sidebar/paragraph/ParaLineSpacingPopup.cxx | 39 ++++++--- svx/util/svx.component | 4 sw/source/uibase/app/swmodule.cxx | 1 9 files changed, 68 insertions(+), 59 deletions(-)
New commits: commit 7e4b2d90f8b877bd954b7549e17c790fa05ea96a Author: Caolán McNamara <[email protected]> AuthorDate: Tue Jan 7 20:01:32 2020 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Wed Jan 8 17:15:23 2020 +0100 rework ParaLineSpacingPopup to be a PopupWindowController Change-Id: I8b43e0345d8d3c38a7ef21f31655b578a8dc8ea2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86384 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/include/svx/ParaLineSpacingPopup.hxx b/include/svx/ParaLineSpacingPopup.hxx index 0cacabdf072e..835fbb6fca23 100644 --- a/include/svx/ParaLineSpacingPopup.hxx +++ b/include/svx/ParaLineSpacingPopup.hxx @@ -19,20 +19,26 @@ #ifndef INCLUDED_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARALINESPACINGPOPUP_HXX #define INCLUDED_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARALINESPACINGPOPUP_HXX -#include <sfx2/tbxctrl.hxx> +#include <svtools/popupwindowcontroller.hxx> #include <svx/svxdllapi.h> namespace svx { -class SVX_DLLPUBLIC ParaLineSpacingPopup final : public SfxToolBoxControl +class SVX_DLLPUBLIC SvxLineSpacingToolBoxControl final : public svt::PopupWindowController { public: - SFX_DECL_TOOLBOX_CONTROL(); + explicit SvxLineSpacingToolBoxControl( const css::uno::Reference<css::uno::XComponentContext>& rContext ); + virtual ~SvxLineSpacingToolBoxControl() override; - ParaLineSpacingPopup(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx); - virtual ~ParaLineSpacingPopup() override; + using svt::ToolboxController::createPopupWindow; + virtual VclPtr<vcl::Window> createPopupWindow( vcl::Window* pParent ) override; - virtual VclPtr<SfxPopupWindow> CreatePopupWindow() 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; }; } diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu index 722df647ce3b..c9870cec546c 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu @@ -1272,6 +1272,17 @@ <value>com.sun.star.comp.svx.LineEndToolBoxControl</value> </prop> </node> + <node oor:name="LineSpacingToolBoxControl" oor:op="replace"> + <prop oor:name="Command"> + <value>.uno:LineSpacing</value> + </prop> + <prop oor:name="Module"> + <value/> + </prop> + <prop oor:name="Controller"> + <value>com.sun.star.comp.svx.LineSpacingToolBoxControl</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 45129b81b089..4df0bf295e80 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::ParaLineSpacingPopup ::RegisterControl(SID_ATTR_PARA_LINESPACE, pMod ); svx::TextCharacterSpacingPopup ::RegisterControl(SID_ATTR_CHAR_KERNING, pMod ); svx::TextUnderlinePopup ::RegisterControl(SID_ATTR_CHAR_UNDERLINE, pMod ); svx::FormatPaintBrushToolBoxControl::RegisterControl(SID_FORMATPAINTBRUSH, pMod ); diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx index 55d306e53925..43f40d8df7bf 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::ParaLineSpacingPopup::RegisterControl(SID_ATTR_PARA_LINESPACE, pMod); svx::TextCharacterSpacingPopup::RegisterControl(SID_ATTR_CHAR_KERNING, pMod); svx::TextUnderlinePopup::RegisterControl(SID_ATTR_CHAR_UNDERLINE, pMod); diff --git a/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx b/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx index 90fb26e99b7e..ccb4359b0ef2 100644 --- a/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx +++ b/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx @@ -29,9 +29,12 @@ #include <svtools/unitconv.hxx> #include <vcl/button.hxx> #include <vcl/fixed.hxx> +#include <vcl/lstbox.hxx> #include <svl/itempool.hxx> +#include <svx/ParaLineSpacingPopup.hxx> + #define DEFAULT_LINE_SPACING 200 #define FIX_DIST_DEF 283 #define LINESPACE_1 100 @@ -53,8 +56,8 @@ using namespace svx; -ParaLineSpacingControl::ParaLineSpacingControl(sal_uInt16 nId, vcl::Window* pParent) - : SfxPopupWindow(nId, pParent, "ParaLineSpacingControl", "svx/ui/paralinespacingcontrol.ui"), +ParaLineSpacingControl::ParaLineSpacingControl(SvxLineSpacingToolBoxControl* pControl, vcl::Window* pParent) + : ToolbarPopup( pControl->getFrameInterface(), pParent, "ParaLineSpacingControl", "svx/ui/paralinespacingcontrol.ui"), meLNSpaceUnit(MapUnit::Map100thMM), mpSpacing1Button(get<PushButton>("spacing_1")), mpSpacing115Button(get<PushButton>("spacing_115")), @@ -108,7 +111,7 @@ void ParaLineSpacingControl::dispose() mpLineDistLabel.clear(); mpLineDistAtPercentBox.clear(); mpLineDistAtMetricBox.clear(); - SfxPopupWindow::dispose(); + ToolbarPopup::dispose(); } void ParaLineSpacingControl::Initialize() @@ -208,39 +211,6 @@ void ParaLineSpacingControl::Initialize() } mpLineDist->SaveValue(); - - /* TODO - const sal_uInt16 uCount = mpLineDist->GetEntryCount(); - if( uCount == LLINESPACE_FIX + 1 ) - { - switch (currentContext.GetCombinedContext_DI()) - { - case CombinedEnumContext(Application::DrawImpress, Context::Table): - case CombinedEnumContext(Application::DrawImpress, Context::DrawText): - case CombinedEnumContext(Application::DrawImpress, Context::Draw): - case CombinedEnumContext(Application::DrawImpress, Context::TextObject): - case CombinedEnumContext(Application::DrawImpress, Context::Graphic): - case CombinedEnumContext(Application::Calc, Context::DrawText): - case CombinedEnumContext(Application::WriterVariants, Context::DrawText): - case CombinedEnumContext(Application::WriterVariants, Context::Annotation): - { - mpLineDist->RemoveEntry(LLINESPACE_FIX); - } - } - } - else if( uCount == LLINESPACE_FIX) - { - switch (currentContext.GetCombinedContext_DI()) - { - case CombinedEnumContext(Application::WriterVariants, Context::Default): - case CombinedEnumContext(Application::WriterVariants, Context::Text): - case CombinedEnumContext(Application::WriterVariants, Context::Table): - { - mpLineDist->InsertEntry(OUString("Fixed"), LLINESPACE_FIX); - } - } - } - */ } void ParaLineSpacingControl::UpdateMetricFields() diff --git a/svx/source/sidebar/paragraph/ParaLineSpacingControl.hxx b/svx/source/sidebar/paragraph/ParaLineSpacingControl.hxx index 9814737aeab2..5e7501406605 100644 --- a/svx/source/sidebar/paragraph/ParaLineSpacingControl.hxx +++ b/svx/source/sidebar/paragraph/ParaLineSpacingControl.hxx @@ -19,18 +19,22 @@ #ifndef INCLUDED_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARALINESPACINGCONTROL_HXX #define INCLUDED_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARALINESPACINGCONTROL_HXX -#include <svtools/ctrlbox.hxx> +#include <svtools/toolbarmenu.hxx> #include <sfx2/tbxctrl.hxx> +#include <vcl/field.hxx> +#include <vcl/fixed.hxx> class SvxLineSpacingItem; class Button; namespace svx { -class ParaLineSpacingControl : public SfxPopupWindow +class SvxLineSpacingToolBoxControl; + +class ParaLineSpacingControl : public svtools::ToolbarPopup { public: - explicit ParaLineSpacingControl(sal_uInt16 nId, vcl::Window* pParent); + explicit ParaLineSpacingControl(SvxLineSpacingToolBoxControl* pControl, vcl::Window* pParent); virtual ~ParaLineSpacingControl() override; virtual void dispose() override; diff --git a/svx/source/sidebar/paragraph/ParaLineSpacingPopup.cxx b/svx/source/sidebar/paragraph/ParaLineSpacingPopup.cxx index cea47f656e6b..eb7d70c38b79 100644 --- a/svx/source/sidebar/paragraph/ParaLineSpacingPopup.cxx +++ b/svx/source/sidebar/paragraph/ParaLineSpacingPopup.cxx @@ -26,27 +26,44 @@ using namespace svx; -SFX_IMPL_TOOLBOX_CONTROL(ParaLineSpacingPopup, SvxLineSpacingItem); - -ParaLineSpacingPopup::ParaLineSpacingPopup(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx) - : SfxToolBoxControl(nSlotId, nId, rTbx) +SvxLineSpacingToolBoxControl::SvxLineSpacingToolBoxControl(const css::uno::Reference<css::uno::XComponentContext>& rContext) + : PopupWindowController(rContext, nullptr, OUString()) { - rTbx.SetItemBits(nId, ToolBoxItemBits::DROPDOWNONLY | rTbx.GetItemBits(nId)); } -ParaLineSpacingPopup::~ParaLineSpacingPopup() +SvxLineSpacingToolBoxControl::~SvxLineSpacingToolBoxControl() {} + +void SvxLineSpacingToolBoxControl::initialize( const css::uno::Sequence< css::uno::Any >& rArguments ) { + 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)); } -VclPtr<SfxPopupWindow> ParaLineSpacingPopup::CreatePopupWindow() +VclPtr<vcl::Window> SvxLineSpacingToolBoxControl::createPopupWindow( vcl::Window* pParent ) { - VclPtr<ParaLineSpacingControl> pControl = VclPtr<ParaLineSpacingControl>::Create(GetSlotId(), &GetToolBox()); + return VclPtr<ParaLineSpacingControl>::Create(this, pParent); +} - pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus); +OUString SvxLineSpacingToolBoxControl::getImplementationName() +{ + return "com.sun.star.comp.svx.LineSpacingToolBoxControl"; +} - SetPopupWindow(pControl); +css::uno::Sequence<OUString> SvxLineSpacingToolBoxControl::getSupportedServiceNames() +{ + return { "com.sun.star.frame.ToolbarController" }; +} - return pControl; +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * +com_sun_star_comp_svx_LineSpacingToolBoxControl_get_implementation( + css::uno::XComponentContext* rContext, + css::uno::Sequence<css::uno::Any> const & ) +{ + return cppu::acquire( new SvxLineSpacingToolBoxControl( rContext ) ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/util/svx.component b/svx/util/svx.component index bc5bbb2a04d6..323126691b1e 100644 --- a/svx/util/svx.component +++ b/svx/util/svx.component @@ -104,4 +104,8 @@ constructor="com_sun_star_comp_svx_LineEndToolBoxControl_get_implementation"> <service name="com.sun.star.frame.ToolbarController"/> </implementation> + <implementation name="com.sun.star.comp.svx.LineSpacingToolBoxControl" + constructor="com_sun_star_comp_svx_LineSpacingToolBoxControl_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 91bda9aea631..49b96b4bf0cb 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::ParaLineSpacingPopup::RegisterControl(SID_ATTR_PARA_LINESPACE, 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); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
