summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svx/verttexttbxctrl.hxx38
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu88
-rw-r--r--sc/source/ui/app/scdll.cxx7
-rw-r--r--sd/source/ui/app/sddll.cxx8
-rw-r--r--svtools/source/uno/popupwindowcontroller.cxx11
-rw-r--r--svx/source/tbxctrls/verttexttbxctrl.cxx120
-rw-r--r--svx/util/svx.component8
-rw-r--r--sw/source/uibase/app/swmodule.cxx7
8 files changed, 213 insertions, 74 deletions
diff --git a/include/svx/verttexttbxctrl.hxx b/include/svx/verttexttbxctrl.hxx
index 157a1f85def9..12498068c467 100644
--- a/include/svx/verttexttbxctrl.hxx
+++ b/include/svx/verttexttbxctrl.hxx
@@ -19,37 +19,53 @@
#ifndef INCLUDED_SVX_VERTTEXTTBXCTRL_HXX
#define INCLUDED_SVX_VERTTEXTTBXCTRL_HXX
-#include <sfx2/tbxctrl.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+#include <cppuhelper/implbase.hxx>
+#include <svtools/toolboxcontroller.hxx>
+
#include <svx/svxdllapi.h>
+//HACK to avoid duplicate ImplInheritanceHelper symbols with MSVC:
+class SAL_DLLPUBLIC_TEMPLATE SvxVertCTLTextTbxCtrl_Base:
+ public cppu::ImplInheritanceHelper<svt::ToolboxController, css::lang::XServiceInfo>
+{
+ using ImplInheritanceHelper::ImplInheritanceHelper;
+};
+
/*
control to remove/insert cjk settings dependent vertical text toolbox item
*/
-class SvxVertCTLTextTbxCtrl : public SfxToolBoxControl
+class SvxVertCTLTextTbxCtrl : public SvxVertCTLTextTbxCtrl_Base
{
public:
- SvxVertCTLTextTbxCtrl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx );
+ explicit SvxVertCTLTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+
virtual ~SvxVertCTLTextTbxCtrl() override;
- // XInitialization
- virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override = 0;
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
- virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState,
- const SfxPoolItem* pState ) override;
+ // XStatusListener
+ virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& rEvent) override;
};
class SVX_DLLPUBLIC SvxCTLTextTbxCtrl final : public SvxVertCTLTextTbxCtrl
{
public:
- SFX_DECL_TOOLBOX_CONTROL();
- SvxCTLTextTbxCtrl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx );
+ SvxCTLTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+
+ virtual OUString SAL_CALL getImplementationName() override;
};
class SVX_DLLPUBLIC SvxVertTextTbxCtrl final : public SvxVertCTLTextTbxCtrl
{
public:
- SFX_DECL_TOOLBOX_CONTROL();
- SvxVertTextTbxCtrl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx );
+ SvxVertTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+
+ virtual OUString SAL_CALL getImplementationName() override;
};
#endif
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
index 8ed8d5c901de..b9c4d64f4278 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
@@ -1371,6 +1371,94 @@
<value>com.sun.star.comp.svx.LineEndToolBoxControl</value>
</prop>
</node>
+ <node oor:name="VertTopToBottomToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:TextdirectionTopToBottom</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.VertTextToolBoxControl</value>
+ </prop>
+ </node>
+ <node oor:name="VertLeftToRightToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:TextdirectionLeftToRight</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.VertTextToolBoxControl</value>
+ </prop>
+ </node>
+ <node oor:name="VertCaptionToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:VerticalCaption</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.VertTextToolBoxControl</value>
+ </prop>
+ </node>
+ <node oor:name="VertDrawFontworkToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:DrawFontworkVertical</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.VertTextToolBoxControl</value>
+ </prop>
+ </node>
+ <node oor:name="VertTextToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:VerticalText</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.VertTextToolBoxControl</value>
+ </prop>
+ </node>
+ <node oor:name="VertTextFitToSizeToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:VerticalTextFitToSizeTool</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.VertTextToolBoxControl</value>
+ </prop>
+ </node>
+ <node oor:name="CTLParaLeftToRightToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:ParaLeftToRight</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.CTLToolBoxControl</value>
+ </prop>
+ </node>
+ <node oor:name="CTLParaRightToLeftToolBoxControl" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:ParaRightToLeft</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.comp.svx.CTLToolBoxControl</value>
+ </prop>
+ </node>
<node oor:name="LineStyleToolBoxControl" oor:op="replace">
<prop oor:name="Command">
<value>.uno:XLineStyle</value>
diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx
index 03d431fc2d5b..c50fcce995cd 100644
--- a/sc/source/ui/app/scdll.cxx
+++ b/sc/source/ui/app/scdll.cxx
@@ -162,13 +162,6 @@ void ScDLL::Init()
SvxGrafGammaToolBoxControl ::RegisterControl(SID_ATTR_GRAF_GAMMA, pMod);
SvxGrafTransparenceToolBoxControl::RegisterControl(SID_ATTR_GRAF_TRANSPARENCE, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_CAPTION_VERTICAL, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_TEXT_VERTICAL, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_LEFT_TO_RIGHT, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_TOP_TO_BOTTOM, pMod);
- SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
- SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
-
// Media Controller
#if HAVE_FEATURE_AVMEDIA
::avmedia::MediaToolBoxControl::RegisterControl( SID_AVMEDIA_TOOLBOX, pMod );
diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx
index 4df9b7774d33..dcaab836ec68 100644
--- a/sd/source/ui/app/sddll.cxx
+++ b/sd/source/ui/app/sddll.cxx
@@ -189,14 +189,6 @@ void SdDLL::RegisterControllers(SdModule* pMod)
SvxGrafContrastToolBoxControl::RegisterControl( SID_ATTR_GRAF_CONTRAST, pMod );
SvxGrafGammaToolBoxControl::RegisterControl( SID_ATTR_GRAF_GAMMA, pMod );
SvxGrafTransparenceToolBoxControl::RegisterControl( SID_ATTR_GRAF_TRANSPARENCE, pMod );
- SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_TOP_TO_BOTTOM, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_LEFT_TO_RIGHT, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_CAPTION_VERTICAL, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_FONTWORK_VERTICAL, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_TEXT_VERTICAL, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_TEXT_FITTOSIZE_VERTICAL, pMod);
- SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
- SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
// register StatusBarControls
SvxZoomPageStatusBarControl::RegisterControl( SID_ZOOM_ENTIRE_PAGE, pMod );
diff --git a/svtools/source/uno/popupwindowcontroller.cxx b/svtools/source/uno/popupwindowcontroller.cxx
index fcddc6c872c0..66986be60430 100644
--- a/svtools/source/uno/popupwindowcontroller.cxx
+++ b/svtools/source/uno/popupwindowcontroller.cxx
@@ -185,16 +185,16 @@ void SAL_CALL PopupWindowController::dispose()
// XStatusListener
void SAL_CALL PopupWindowController::statusChanged( const frame::FeatureStateEvent& rEvent )
{
+ SolarMutexGuard aSolarLock;
+
bool bValue = false;
rEvent.State >>= bValue;
- if (weld::TransportAsXWindow* pTunnel = dynamic_cast<weld::TransportAsXWindow*>(getParent().get()))
+ if (m_pToolbar)
{
- auto pToolbar = dynamic_cast<weld::Toolbar*>(pTunnel->getWidget());
- assert(pToolbar && "must be a toolbar");
OString sId = m_aCommandURL.toUtf8();
- pToolbar->set_item_active(sId, bValue);
- pToolbar->set_item_sensitive(sId, rEvent.IsEnabled);
+ m_pToolbar->set_item_active(sId, bValue);
+ m_pToolbar->set_item_sensitive(sId, rEvent.IsEnabled);
return;
}
@@ -202,7 +202,6 @@ void SAL_CALL PopupWindowController::statusChanged( const frame::FeatureStateEve
sal_uInt16 nItemId = 0;
if ( getToolboxId( nItemId, &pToolBox ) )
{
- SolarMutexGuard aSolarLock;
pToolBox->CheckItem( nItemId, bValue );
pToolBox->EnableItem( nItemId, rEvent.IsEnabled );
}
diff --git a/svx/source/tbxctrls/verttexttbxctrl.cxx b/svx/source/tbxctrls/verttexttbxctrl.cxx
index 24dda13495e9..7fbb87c245d7 100644
--- a/svx/source/tbxctrls/verttexttbxctrl.cxx
+++ b/svx/source/tbxctrls/verttexttbxctrl.cxx
@@ -17,81 +17,131 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-
+#include <cppuhelper/supportsservice.hxx>
#include <svx/svxids.hrc>
#include <svx/verttexttbxctrl.hxx>
#include <svl/languageoptions.hxx>
#include <sfx2/app.hxx>
#include <svl/eitem.hxx>
#include <vcl/toolbox.hxx>
+#include <vcl/weld.hxx>
#include <rtl/ustring.hxx>
-SFX_IMPL_TOOLBOX_CONTROL(SvxCTLTextTbxCtrl, SfxBoolItem);
-SFX_IMPL_TOOLBOX_CONTROL(SvxVertTextTbxCtrl, SfxBoolItem);
+SvxCTLTextTbxCtrl::SvxCTLTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext)
+ : SvxVertCTLTextTbxCtrl(rContext)
+{
+ addStatusListener(".uno:CTLFontState");
+}
-SvxCTLTextTbxCtrl::SvxCTLTextTbxCtrl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :
- SvxVertCTLTextTbxCtrl( nSlotId, nId, rTbx )
+OUString SvxCTLTextTbxCtrl::getImplementationName()
{
- addStatusListener( ".uno:CTLFontState");
+ return "com.sun.star.comp.svx.CTLToolBoxControl";
}
-SvxVertTextTbxCtrl::SvxVertTextTbxCtrl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :
- SvxVertCTLTextTbxCtrl( nSlotId, nId, rTbx )
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
+com_sun_star_comp_svx_CTLToolBoxControl_get_implementation(
+ css::uno::XComponentContext* rContext,
+ css::uno::Sequence<css::uno::Any> const & )
{
- addStatusListener( ".uno:VerticalTextState");
+ return cppu::acquire(new SvxCTLTextTbxCtrl(rContext));
}
-SvxVertCTLTextTbxCtrl::SvxVertCTLTextTbxCtrl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :
- SfxToolBoxControl( nSlotId, nId, rTbx )
+SvxVertTextTbxCtrl::SvxVertTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext)
+ : SvxVertCTLTextTbxCtrl(rContext)
{
+ addStatusListener(".uno:VerticalTextState");
}
-SvxVertCTLTextTbxCtrl::~SvxVertCTLTextTbxCtrl( )
+OUString SvxVertTextTbxCtrl::getImplementationName()
+{
+ return "com.sun.star.comp.svx.VertTextToolBoxControl";
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
+com_sun_star_comp_svx_VertTextToolBoxControl_get_implementation(
+ css::uno::XComponentContext* rContext,
+ css::uno::Sequence<css::uno::Any> const & )
+{
+ return cppu::acquire(new SvxVertTextTbxCtrl(rContext));
+}
+
+SvxVertCTLTextTbxCtrl::SvxVertCTLTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext)
+ : SvxVertCTLTextTbxCtrl_Base(rContext, nullptr, OUString())
{
}
-void SvxVertCTLTextTbxCtrl::initialize(const css::uno::Sequence<css::uno::Any>& rArguments)
+SvxVertCTLTextTbxCtrl::~SvxVertCTLTextTbxCtrl( )
{
- SfxToolBoxControl::initialize(rArguments);
- setFastPropertyValue_NoBroadcast(1, css::uno::makeAny(true));
}
-void SvxVertCTLTextTbxCtrl::StateChanged(
- sal_uInt16 nSID,
- SfxItemState eState,
- const SfxPoolItem* pState )
+void SAL_CALL SvxVertCTLTextTbxCtrl::statusChanged(const css::frame::FeatureStateEvent& rEvent)
{
- SvtLanguageOptions aLangOptions;
- bool bCalc = false;
+ ToolBox* pToolBox = nullptr;
+ sal_uInt16 nItemId = 0;
+ bool bVclToolBox = getToolboxId(nItemId, &pToolBox);
+
bool bEnabled = false;
- if ( nSID == SID_VERTICALTEXT_STATE )
+ if (rEvent.FeatureURL.Complete == ".uno:VerticalTextState")
+ {
+ SvtLanguageOptions aLangOptions;
bEnabled = aLangOptions.IsVerticalTextEnabled();
- else if ( nSID == SID_CTLFONT_STATE )
+ }
+ else if (rEvent.FeatureURL.Complete == ".uno:CTLFontState")
+ {
+ SvtLanguageOptions aLangOptions;
bEnabled = aLangOptions.IsCTLFontEnabled();
+ }
else
{
- SfxToolBoxControl::StateChanged(nSID, eState, pState);
+ // normal command
+ bool bValue = false;
+ rEvent.State >>= bValue;
+
+ if (m_pToolbar)
+ {
+ OString sId = m_aCommandURL.toUtf8();
+ m_pToolbar->set_item_active(sId, bValue);
+ m_pToolbar->set_item_sensitive(sId, rEvent.IsEnabled);
+ }
+
+ if (bVclToolBox)
+ {
+ pToolBox->CheckItem(nItemId, bValue);
+ pToolBox->EnableItem(nItemId, rEvent.IsEnabled);
+ }
+
return;
}
- if(!bEnabled)
+ if (m_pToolbar)
{
- // always hide if either IsVerticalTextEnabled or IsCTLFontEnabled
- // is false
- GetToolBox().HideItem( GetId() );
- bCalc = true;
+ m_pToolbar->set_item_visible(m_aCommandURL.toUtf8(), bEnabled);
+ return;
}
- if(bCalc)
+
+ if (bVclToolBox)
{
- ToolBox& rTbx = GetToolBox();
- vcl::Window* pParent = rTbx.GetParent();
- if(WindowType::FLOATINGWINDOW == pParent->GetType())
+ pToolBox->ShowItem(nItemId, bEnabled);
+
+ vcl::Window* pParent = pToolBox->GetParent();
+ if (WindowType::FLOATINGWINDOW == pParent->GetType())
{
- Size aSize(rTbx.CalcWindowSizePixel());
- rTbx.SetPosSizePixel( Point(), aSize );
+ Size aSize(pToolBox->CalcWindowSizePixel());
+ pToolBox->SetPosSizePixel( Point(), aSize );
pParent->SetOutputSizePixel( aSize );
}
}
}
+// XServiceInfo
+sal_Bool SAL_CALL SvxVertCTLTextTbxCtrl::supportsService( const OUString& ServiceName )
+{
+ return cppu::supportsService(this, ServiceName);
+}
+
+css::uno::Sequence< OUString > SvxVertCTLTextTbxCtrl::getSupportedServiceNames()
+{
+ return { "com.sun.star.frame.ToolbarController" };
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/util/svx.component b/svx/util/svx.component
index 81cae7623bd2..ff8d802394ac 100644
--- a/svx/util/svx.component
+++ b/svx/util/svx.component
@@ -124,4 +124,12 @@
constructor="com_sun_star_comp_svx_UndoRedoToolBoxControl_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/>
</implementation>
+ <implementation name="com.sun.star.comp.svx.CTLToolBoxControl"
+ constructor="com_sun_star_comp_svx_CTLToolBoxControl_get_implementation">
+ <service name="com.sun.star.frame.ToolbarController"/>
+ </implementation>
+ <implementation name="com.sun.star.comp.svx.VertTextToolBoxControl"
+ constructor="com_sun_star_comp_svx_VertTextToolBoxControl_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 b62455e83aac..d68c2eff51d4 100644
--- a/sw/source/uibase/app/swmodule.cxx
+++ b/sw/source/uibase/app/swmodule.cxx
@@ -329,13 +329,6 @@ void SwDLL::RegisterControls()
SvxGrafGammaToolBoxControl::RegisterControl( SID_ATTR_GRAF_GAMMA, pMod );
SvxGrafTransparenceToolBoxControl::RegisterControl( SID_ATTR_GRAF_TRANSPARENCE, pMod );
SvxGrafModeToolBoxControl::RegisterControl( SID_ATTR_GRAF_MODE, pMod );
- SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_LEFT_TO_RIGHT, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_TOP_TO_BOTTOM, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_CAPTION_VERTICAL, pMod);
- SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_TEXT_VERTICAL, pMod);
-
- SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
- SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
#if HAVE_FEATURE_AVMEDIA
::avmedia::MediaToolBoxControl::RegisterControl(SID_AVMEDIA_TOOLBOX, pMod);