[Libreoffice-commits] core.git: include/svx officecfg/registry sc/source sd/source svx/source svx/util sw/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Mon Jan 13 17:29:34 UTC 2020


 include/svx/TextCharacterSpacingPopup.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         |    3 
 svx/source/sidebar/text/TextCharacterSpacingControl.cxx         |   13 +--
 svx/source/sidebar/text/TextCharacterSpacingControl.hxx         |   10 +-
 svx/source/sidebar/text/TextCharacterSpacingPopup.cxx           |   37 +++++++---
 svx/util/svx.component                                          |    4 +
 sw/source/uibase/app/swmodule.cxx                               |    1 
 10 files changed, 68 insertions(+), 31 deletions(-)

New commits:
commit c9ba69cdfaaf19695fc8e40ba7af1d06490a123f
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Jan 13 13:20:45 2020 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Jan 13 18:28:59 2020 +0100

    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 at redhat.com>

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);


More information about the Libreoffice-commits mailing list