diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-01-13 09:14:39 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-01-14 11:51:06 +0100 |
commit | 94c1f5cfb96a826220b64608cf0ada76d3bdde31 (patch) | |
tree | 15c3db39b12440bb5079a28dfe1001983ab9f8f5 /sfx2 | |
parent | 9bb9fb43a69dd7c0afe864caadb8bb9d45207479 (diff) |
rework SfxCharmapCtrl to be a PopupWindowController
With MSVC, the changes to include/sfx2/charmappopup.hxx would cause spurious
> isvt.lib(svtlo.dll) : error LNK2005: "public: virtual class com::sun::star::uno::Any __cdecl cppu::ImplInheritanceHelper<class svt::ToolboxController,class com::sun::star::lang::XServiceInfo>::queryInterface(class com::sun::star::uno::Type const &)" (?queryInterface@?$ImplInheritanceHelper@VToolboxController@svt@@VXServiceInfo@lang@star@sun@com@@@cppu@@UAA?AVAny@uno@star@sun@com@@ABVType@4567@@Z) already defined in classificationcontroller.o
> isvt.lib(svtlo.dll) : error LNK2005: "public: virtual void __cdecl cppu::ImplInheritanceHelper<class svt::ToolboxController,class com::sun::star::lang::XServiceInfo>::acquire(void)" (?acquire@?$ImplInheritanceHelper@VToolboxController@svt@@VXServiceInfo@lang@star@sun@com@@@cppu@@UAAXXZ) already defined in classificationcontroller.o
> isvt.lib(svtlo.dll) : error LNK2005: "public: virtual void __cdecl cppu::ImplInheritanceHelper<class svt::ToolboxController,class com::sun::star::lang::XServiceInfo>::release(void)" (?release@?$ImplInheritanceHelper@VToolboxController@svt@@VXServiceInfo@lang@star@sun@com@@@cppu@@UAAXXZ) already defined in classificationcontroller.o
when linking Library_sfx (and which appears to be unrelated to the (implicit)
/INCREMENTAL since 9739c37d8ad7c6fca269709674a6975fa7ebd191 "enable incremental
linking on windows"), which requires the HACK in
include/svtools/popupwindowcontroller.hxx.
Change-Id: I74c4318e6216001f18d0cf5ed63e78ba2ab13cd3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86664
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/control/charmapcontrol.cxx | 12 | ||||
-rw-r--r-- | sfx2/source/dialog/charmappopup.cxx | 39 | ||||
-rw-r--r-- | sfx2/util/sfx.component | 4 |
3 files changed, 35 insertions, 20 deletions
diff --git a/sfx2/source/control/charmapcontrol.cxx b/sfx2/source/control/charmapcontrol.cxx index 25c9548bb5d7..fe44619b2f3a 100644 --- a/sfx2/source/control/charmapcontrol.cxx +++ b/sfx2/source/control/charmapcontrol.cxx @@ -20,13 +20,14 @@ #include <comphelper/dispatchcommand.hxx> #include <officecfg/Office/Common.hxx> #include <sfx2/charmapcontrol.hxx> +#include <sfx2/charmappopup.hxx> #include <sfx2/viewfrm.hxx> #include <vcl/event.hxx> using namespace css; -SfxCharmapCtrl::SfxCharmapCtrl(sal_uInt16 nId, vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rFrame) - : SfxPopupWindow(nId, pParent, "charmapctrl", "sfx/ui/charmapcontrol.ui", rFrame) +SfxCharmapCtrl::SfxCharmapCtrl(CharmapPopup* pControl, vcl::Window* pParent) + : ToolbarPopup(pControl->getFrameInterface(), pParent, "charmapctrl", "sfx/ui/charmapcontrol.ui") { get( m_pRecentCharView[0], "viewchar1" ); get( m_pRecentCharView[1], "viewchar2" ); @@ -89,7 +90,6 @@ SfxCharmapCtrl::~SfxCharmapCtrl() disposeOnce(); } - void SfxCharmapCtrl::dispose() { for(int i = 0; i < 16; i++) @@ -99,10 +99,9 @@ void SfxCharmapCtrl::dispose() maRecentCharFontList.clear(); maDlgBtn.clear(); - SfxPopupWindow::dispose(); + ToolbarPopup::dispose(); } - void SfxCharmapCtrl::getFavCharacterList() { //retrieve recent character list @@ -114,7 +113,6 @@ void SfxCharmapCtrl::getFavCharacterList() std::copy(rFavCharFontList.begin(), rFavCharFontList.end(), std::back_inserter(maFavCharFontList)); } - void SfxCharmapCtrl::updateFavCharControl() { int i = 0; @@ -191,7 +189,7 @@ bool SfxCharmapCtrl::EventNotify( NotifyEvent& rNEvt ) mbNeedsInit = false; } } - return SfxPopupWindow::EventNotify( rNEvt ); + return ToolbarPopup::EventNotify( rNEvt ); } diff --git a/sfx2/source/dialog/charmappopup.cxx b/sfx2/source/dialog/charmappopup.cxx index bbe3ae77b413..330012c176b9 100644 --- a/sfx2/source/dialog/charmappopup.cxx +++ b/sfx2/source/dialog/charmappopup.cxx @@ -20,33 +20,46 @@ #include <sfx2/charmapcontrol.hxx> #include <vcl/toolbox.hxx> -SFX_IMPL_TOOLBOX_CONTROL(CharmapPopup, SfxVoidItem); - -CharmapPopup::CharmapPopup(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx) - : SfxToolBoxControl(nSlotId, nId, rTbx) +CharmapPopup::CharmapPopup(const css::uno::Reference<css::uno::XComponentContext>& rContext) + : PopupWindowController(rContext, nullptr, OUString()) { - rTbx.SetItemBits(nId, ToolBoxItemBits::DROPDOWNONLY | rTbx.GetItemBits(nId)); } CharmapPopup::~CharmapPopup() { } -VclPtr<SfxPopupWindow> CharmapPopup::CreatePopupWindow() +void CharmapPopup::initialize( const css::uno::Sequence< css::uno::Any >& rArguments ) { - VclPtr<SfxCharmapCtrl> pControl = VclPtr<SfxCharmapCtrl>::Create(GetSlotId(), &GetToolBox(), m_xFrame); + 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)); +} - pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus); +VclPtr<vcl::Window> CharmapPopup::createPopupWindow(vcl::Window* pParent) +{ + return VclPtr<SfxCharmapCtrl>::Create(this, pParent); +} - SetPopupWindow(pControl); +OUString CharmapPopup::getImplementationName() +{ + return "com.sun.star.comp.sfx2.InsertSymbolToolBoxControl"; +} - return pControl; +css::uno::Sequence<OUString> CharmapPopup::getSupportedServiceNames() +{ + return { "com.sun.star.frame.ToolbarController" }; } -void SAL_CALL CharmapPopup::execute( sal_Int16 /*KeyModifier*/ ) +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * +com_sun_star_comp_sfx2_InsertSymbolToolBoxControl_get_implementation( + css::uno::XComponentContext* rContext, + css::uno::Sequence<css::uno::Any> const & ) { - com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aArgs; - Dispatch(".uno:InsertSymbol", aArgs); + return cppu::acquire( new CharmapPopup( rContext ) ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/util/sfx.component b/sfx2/util/sfx.component index ed9a449baca1..0e1b2521c1f6 100644 --- a/sfx2/util/sfx.component +++ b/sfx2/util/sfx.component @@ -86,4 +86,8 @@ constructor="com_sun_star_sfx2_ClassificationCategoriesController_get_implementation"> <service name="com.sun.star.frame.ToolbarController"/> </implementation> + <implementation name="com.sun.star.comp.sfx2.InsertSymbolToolBoxControl" + constructor="com_sun_star_comp_sfx2_InsertSymbolToolBoxControl_get_implementation"> + <service name="com.sun.star.frame.ToolbarController"/> + </implementation> </component> |