include/sfx2/charmapcontainer.hxx | 12 ++-- include/sfx2/charwin.hxx | 16 ++--- include/sfx2/stbitem.hxx | 2 include/svx/cuicharmap.hxx | 2 reportdesign/source/ui/inc/statusbarcontroller.hxx | 4 + reportdesign/source/ui/misc/statusbarcontroller.cxx | 55 ++++++++++---------- sfx2/inc/charmapcontrol.hxx | 4 - sfx2/source/control/charmapcontainer.cxx | 18 +++--- sfx2/source/control/charmapcontrol.cxx | 8 +- sfx2/source/control/charwin.cxx | 16 ++--- svx/source/dialog/cuicharmap.cxx | 17 ++---- 11 files changed, 79 insertions(+), 75 deletions(-)
New commits: commit fd2a572b76d37bcd9132d6000e348b398d83b0bc Author: Michael Weghorn <[email protected]> AuthorDate: Thu Dec 11 13:47:50 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Dec 12 13:27:20 2025 +0100 reportdesign: Use ref to more concrete SfxStatusBarControl Switch OStatusbarController::m_rController from a reference to the abstract UNO interface XStatusbarController to the more concrete SfxStatusBarControl implementation and rename to m_pControl accordingly. Make the SfxStatusBarControl overrides of public UNO interface methos also public, so that OStatusbarController can continue calling them. Change-Id: Ibebeb9640268b32914d5b1e985e6d4e18397c03d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195479 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/sfx2/stbitem.hxx b/include/sfx2/stbitem.hxx index 67c88c68710d..b2a9fc1009d3 100644 --- a/include/sfx2/stbitem.hxx +++ b/include/sfx2/stbitem.hxx @@ -67,7 +67,6 @@ public: virtual void SAL_CALL acquire() noexcept override; virtual void SAL_CALL release() noexcept override; -protected: // XEventListener using svt::StatusbarController::disposing; @@ -91,6 +90,7 @@ protected: virtual void SAL_CALL click( const css::awt::Point& aPos ) override; virtual void SAL_CALL doubleClick( const css::awt::Point& aPos ) override; +protected: // Old sfx2 interface virtual void StateChangedAtStatusBarControl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); diff --git a/reportdesign/source/ui/inc/statusbarcontroller.hxx b/reportdesign/source/ui/inc/statusbarcontroller.hxx index e00e9502aaac..38c0df8a0fce 100644 --- a/reportdesign/source/ui/inc/statusbarcontroller.hxx +++ b/reportdesign/source/ui/inc/statusbarcontroller.hxx @@ -23,6 +23,8 @@ #include <comphelper/uno3.hxx> #include <com/sun/star/lang/XServiceInfo.hpp> #include <cppuhelper/implbase1.hxx> +#include <rtl/ref.hxx> +#include <sfx2/stbitem.hxx> namespace rptui { @@ -30,7 +32,7 @@ namespace rptui class OStatusbarController : public ::svt::StatusbarController, public OStatusbarController_BASE { - css::uno::Reference< css::frame::XStatusbarController > m_rController; + rtl::Reference<SfxStatusBarControl> m_pControl; sal_uInt16 m_nSlotId; sal_uInt16 m_nId; public: diff --git a/reportdesign/source/ui/misc/statusbarcontroller.cxx b/reportdesign/source/ui/misc/statusbarcontroller.cxx index 8c44f1473635..62b297d88b5b 100644 --- a/reportdesign/source/ui/misc/statusbarcontroller.cxx +++ b/reportdesign/source/ui/misc/statusbarcontroller.cxx @@ -87,25 +87,25 @@ void SAL_CALL OStatusbarController::initialize( const Sequence< Any >& _rArgumen } } - rtl::Reference<SfxStatusBarControl> pController; + rtl::Reference<SfxStatusBarControl> pControl; if ( m_aCommandURL == ".uno:ZoomSlider" ) { m_nSlotId = SID_ATTR_ZOOMSLIDER; - pController = new SvxZoomSliderControl(m_nSlotId,m_nId,*pStatusBar); + pControl = new SvxZoomSliderControl(m_nSlotId, m_nId, *pStatusBar); } else if ( m_aCommandURL == ".uno:Zoom" ) { m_nSlotId = SID_ATTR_ZOOM; - pController = new SvxZoomStatusBarControl(m_nSlotId,m_nId,*pStatusBar); + pControl = new SvxZoomStatusBarControl(m_nSlotId, m_nId, *pStatusBar); } - if ( pController ) + if (pControl) { - m_rController.set( pController ); - if ( m_rController.is() ) + m_pControl = pControl; + if (m_pControl.is()) { - m_rController->initialize(_rArguments); - m_rController->update(); + m_pControl->initialize(_rArguments); + m_pControl->update(); } } @@ -117,7 +117,7 @@ void SAL_CALL OStatusbarController::statusChanged( const FeatureStateEvent& _aEv { SolarMutexGuard aSolarGuard; - if ( !m_rController.is() ) + if (!m_pControl.is()) return; if ( m_aCommandURL == ".uno:ZoomSlider" ) @@ -127,7 +127,7 @@ void SAL_CALL OStatusbarController::statusChanged( const FeatureStateEvent& _aEv { SvxZoomSliderItem aZoomSlider(100,20,400); aZoomSlider.PutValue(_aEvent.State, 0); - static_cast<SvxZoomSliderControl*>(m_rController.get())->StateChangedAtStatusBarControl(m_nSlotId,SfxItemState::DEFAULT,&aZoomSlider); + static_cast<SvxZoomSliderControl*>(m_pControl.get())->StateChangedAtStatusBarControl(m_nSlotId, SfxItemState::DEFAULT, &aZoomSlider); } } else if ( m_aCommandURL == ".uno:Zoom" ) @@ -137,7 +137,7 @@ void SAL_CALL OStatusbarController::statusChanged( const FeatureStateEvent& _aEv { SvxZoomItem aZoom; aZoom.PutValue(_aEvent.State, 0 ); - static_cast<SvxZoomStatusBarControl*>(m_rController.get())->StateChangedAtStatusBarControl(m_nSlotId,SfxItemState::DEFAULT,&aZoom); + static_cast<SvxZoomStatusBarControl*>(m_pControl.get())->StateChangedAtStatusBarControl(m_nSlotId, SfxItemState::DEFAULT, &aZoom); } } } @@ -145,17 +145,17 @@ void SAL_CALL OStatusbarController::statusChanged( const FeatureStateEvent& _aEv // XStatusbarController sal_Bool SAL_CALL OStatusbarController::mouseButtonDown(const css::awt::MouseEvent& _aEvent) { - return m_rController.is() && m_rController->mouseButtonDown(_aEvent); + return m_pControl.is() && m_pControl->mouseButtonDown(_aEvent); } sal_Bool SAL_CALL OStatusbarController::mouseMove( const css::awt::MouseEvent& _aEvent) { - return m_rController.is() && m_rController->mouseMove(_aEvent); + return m_pControl.is() && m_pControl->mouseMove(_aEvent); } sal_Bool SAL_CALL OStatusbarController::mouseButtonUp( const css::awt::MouseEvent& _aEvent) { - return m_rController.is() && m_rController->mouseButtonUp(_aEvent); + return m_pControl.is() && m_pControl->mouseButtonUp(_aEvent); } void SAL_CALL OStatusbarController::command( @@ -164,8 +164,8 @@ void SAL_CALL OStatusbarController::command( sal_Bool bMouseEvent, const css::uno::Any& aData ) { - if ( m_rController.is() ) - m_rController->command( aPos, nCommand, bMouseEvent, aData ); + if (m_pControl.is()) + m_pControl->command(aPos, nCommand, bMouseEvent, aData); } void SAL_CALL OStatusbarController::paint( @@ -173,36 +173,39 @@ void SAL_CALL OStatusbarController::paint( const css::awt::Rectangle& rOutputRectangle, ::sal_Int32 nStyle ) { - if ( m_rController.is() ) - m_rController->paint( xGraphics, rOutputRectangle, nStyle ); + if (m_pControl.is()) + m_pControl->paint(xGraphics, rOutputRectangle, nStyle); } void SAL_CALL OStatusbarController::click( const css::awt::Point& aPos ) { - if ( m_rController.is() ) - m_rController->click( aPos ); + if (m_pControl.is()) + m_pControl->click(aPos); } void SAL_CALL OStatusbarController::doubleClick( const css::awt::Point& aPos ) { - if ( m_rController.is() ) - m_rController->doubleClick( aPos ); + if (m_pControl.is()) + m_pControl->doubleClick(aPos); } void SAL_CALL OStatusbarController::update() { ::svt::StatusbarController::update(); - if ( m_rController.is() ) - m_rController->update(); + if (m_pControl.is()) + m_pControl->update(); } // XComponent void SAL_CALL OStatusbarController::dispose() { - if ( m_rController.is() ) - ::comphelper::disposeComponent( m_rController ); + if (m_pControl.is()) + { + m_pControl->dispose(); + m_pControl.clear(); + } svt::StatusbarController::dispose(); } commit d9bfb484ae1ecfc19b91110063b7e5287e5199b7 Author: Michael Weghorn <[email protected]> AuthorDate: Thu Dec 11 20:19:01 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Dec 12 13:27:07 2025 +0100 Pass SvxCharView by ref in handlers Pass it by reference instead of by pointer, which makes more clear it's always non-null. Change-Id: Ia9f380a8dac4f891c7573798bae24f046f3f7163 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195496 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/sfx2/charmapcontainer.hxx b/include/sfx2/charmapcontainer.hxx index 5ca5ecc070df..b7be9fe237da 100644 --- a/include/sfx2/charmapcontainer.hxx +++ b/include/sfx2/charmapcontainer.hxx @@ -56,18 +56,18 @@ class SFX2_DLLPUBLIC SfxCharmapContainer Link<void*, void> m_aUpdateFavHdl; Link<void*, void> m_aUpdateRecentHdl; - DECL_DLLPRIVATE_LINK(RecentClearClickHdl, SvxCharView*, void); - DECL_DLLPRIVATE_LINK(FavClearClickHdl, SvxCharView*, void); - DECL_DLLPRIVATE_LINK(RecentClearAllClickHdl, SvxCharView*, void); - DECL_DLLPRIVATE_LINK(FavClearAllClickHdl, SvxCharView*, void); + DECL_DLLPRIVATE_LINK(RecentClearClickHdl, SvxCharView&, void); + DECL_DLLPRIVATE_LINK(FavClearClickHdl, SvxCharView&, void); + DECL_DLLPRIVATE_LINK(RecentClearAllClickHdl, SvxCharView&, void); + DECL_DLLPRIVATE_LINK(FavClearAllClickHdl, SvxCharView&, void); public: SfxCharmapContainer(weld::Builder& rBuilder, const VclPtr<VirtualDevice>& rVirDev, bool bLockGridSizes); - void init(bool bHasInsert, const Link<SvxCharView*, void>& rMouseClickHdl, + void init(bool bHasInsert, const Link<SvxCharView&, void>& rMouseClickHdl, const Link<void*, void>& rUpdateFavHdl, const Link<void*, void>& rUpdateRecentHdl, - const Link<SvxCharView*, void>& rFocusInHdl = Link<SvxCharView*, void>()); + const Link<SvxCharView&, void>& rFocusInHdl = Link<SvxCharView&, void>()); void getFavCharacterList(); void updateFavCharControl(); diff --git a/include/sfx2/charwin.hxx b/include/sfx2/charwin.hxx index 4714f202ba67..e3a5a2bed982 100644 --- a/include/sfx2/charwin.hxx +++ b/include/sfx2/charwin.hxx @@ -34,10 +34,10 @@ private: bool maHasInsert; OUString m_sText; - Link<SvxCharView*, void> maFocusInHdl; - Link<SvxCharView*, void> maMouseClickHdl; - Link<SvxCharView*, void> maClearClickHdl; - Link<SvxCharView*, void> maClearAllClickHdl; + Link<SvxCharView&, void> maFocusInHdl; + Link<SvxCharView&, void> maMouseClickHdl; + Link<SvxCharView&, void> maClearClickHdl; + Link<SvxCharView&, void> maClearAllClickHdl; virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; virtual void Resize() override; @@ -65,10 +65,10 @@ public: Size get_preferred_size() const { return GetDrawingArea()->get_preferred_size(); } - void setFocusInHdl(const Link<SvxCharView*,void> &rLink); - void setMouseClickHdl(const Link<SvxCharView*,void> &rLink); - void setClearClickHdl(const Link<SvxCharView*,void> &rLink); - void setClearAllClickHdl(const Link<SvxCharView*,void> &rLink); + void setFocusInHdl(const Link<SvxCharView&, void>& rLink); + void setMouseClickHdl(const Link<SvxCharView&, void>& rLink); + void setClearClickHdl(const Link<SvxCharView&, void>& rLink); + void setClearAllClickHdl(const Link<SvxCharView&, void>& rLink); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/include/svx/cuicharmap.hxx b/include/svx/cuicharmap.hxx index 47c463a389bf..8bd775b62edc 100644 --- a/include/svx/cuicharmap.hxx +++ b/include/svx/cuicharmap.hxx @@ -118,7 +118,7 @@ private: DECL_DLLPRIVATE_LINK(SearchCharHighlightHdl, SvxShowCharSet&, void); DECL_DLLPRIVATE_LINK(DecimalCodeChangeHdl, weld::Entry&, void); DECL_DLLPRIVATE_LINK(HexCodeChangeHdl, weld::Entry&, void); - DECL_DLLPRIVATE_LINK(CharClickHdl, SvxCharView*, void); + DECL_DLLPRIVATE_LINK(CharClickHdl, SvxCharView&, void); DECL_DLLPRIVATE_LINK(InsertClickHdl, weld::Button&, void); DECL_DLLPRIVATE_LINK(FavSelectHdl, weld::Button&, void); DECL_DLLPRIVATE_LINK(SearchUpdateHdl, weld::Entry&, void); diff --git a/sfx2/inc/charmapcontrol.hxx b/sfx2/inc/charmapcontrol.hxx index 7c46a0f8a5b5..286e3a0684fa 100644 --- a/sfx2/inc/charmapcontrol.hxx +++ b/sfx2/inc/charmapcontrol.hxx @@ -45,8 +45,8 @@ private: std::unique_ptr<weld::Button> m_xDlgBtn; std::unique_ptr<weld::Label> m_xCharInfoLabel; - DECL_LINK(CharFocusInHdl, SvxCharView*, void); - DECL_LINK(CharClickHdl, SvxCharView*, void); + DECL_LINK(CharFocusInHdl, SvxCharView&, void); + DECL_LINK(CharClickHdl, SvxCharView&, void); DECL_LINK(OpenDlgHdl, weld::Button&, void); DECL_LINK(DlgBtnFocusInHdl, weld::Widget&, void); DECL_LINK(UpdateRecentHdl, void*, void); diff --git a/sfx2/source/control/charmapcontainer.cxx b/sfx2/source/control/charmapcontainer.cxx index 7a310f45a944..f13068eb385b 100644 --- a/sfx2/source/control/charmapcontainer.cxx +++ b/sfx2/source/control/charmapcontainer.cxx @@ -103,10 +103,10 @@ SfxCharmapContainer::SfxCharmapContainer(weld::Builder& rBuilder, const VclPtr<V } } -void SfxCharmapContainer::init(bool bHasInsert, const Link<SvxCharView*,void> &rMouseClickHdl, +void SfxCharmapContainer::init(bool bHasInsert, const Link<SvxCharView&, void>& rMouseClickHdl, const Link<void*, void>& rUpdateFavHdl, const Link<void*, void>& rUpdateRecentHdl, - const Link<SvxCharView*,void> &rFocusInHdl) + const Link<SvxCharView&, void>& rFocusInHdl) { m_aUpdateFavHdl = rUpdateFavHdl; m_aUpdateRecentHdl = rUpdateRecentHdl; @@ -297,10 +297,10 @@ bool SfxCharmapContainer::isFavChar(const OUString& rTitle, const OUString& rFon return std::ranges::find(m_aFavChars, CharAndFont(rTitle, rFont)) != m_aFavChars.end(); } -IMPL_LINK(SfxCharmapContainer, RecentClearClickHdl, SvxCharView*, rView, void) +IMPL_LINK(SfxCharmapContainer, RecentClearClickHdl, SvxCharView&, rView, void) { - const OUString& sTitle = rView->GetText(); - OUString sFont = rView->GetFont().GetFamilyName(); + const OUString& sTitle = rView.GetText(); + OUString sFont = rView.GetFont().GetFamilyName(); // if recent char to be added is already in list, remove it auto itChar = std::ranges::find(m_aRecentChars, CharAndFont(sTitle, sFont)); @@ -326,7 +326,7 @@ IMPL_LINK(SfxCharmapContainer, RecentClearClickHdl, SvxCharView*, rView, void) updateRecentCharControl(); } -IMPL_LINK_NOARG(SfxCharmapContainer, RecentClearAllClickHdl, SvxCharView*, void) +IMPL_LINK_NOARG(SfxCharmapContainer, RecentClearAllClickHdl, SvxCharView&, void) { m_aRecentChars.clear(); @@ -338,13 +338,13 @@ IMPL_LINK_NOARG(SfxCharmapContainer, RecentClearAllClickHdl, SvxCharView*, void) updateRecentCharControl(); } -IMPL_LINK(SfxCharmapContainer, FavClearClickHdl, SvxCharView*, rView, void) +IMPL_LINK(SfxCharmapContainer, FavClearClickHdl, SvxCharView&, rView, void) { - deleteFavCharacterFromList(rView->GetText(), rView->GetFont().GetFamilyName()); + deleteFavCharacterFromList(rView.GetText(), rView.GetFont().GetFamilyName()); updateFavCharControl(); } -IMPL_LINK_NOARG(SfxCharmapContainer, FavClearAllClickHdl, SvxCharView*, void) +IMPL_LINK_NOARG(SfxCharmapContainer, FavClearAllClickHdl, SvxCharView&, void) { m_aFavChars.clear(); diff --git a/sfx2/source/control/charmapcontrol.cxx b/sfx2/source/control/charmapcontrol.cxx index c1ccdec401a1..b6d29b5eedf2 100644 --- a/sfx2/source/control/charmapcontrol.cxx +++ b/sfx2/source/control/charmapcontrol.cxx @@ -50,16 +50,16 @@ SfxCharmapCtrl::~SfxCharmapCtrl() { } -IMPL_LINK(SfxCharmapCtrl, CharFocusInHdl, SvxCharView*, pView, void) +IMPL_LINK(SfxCharmapCtrl, CharFocusInHdl, SvxCharView&, rView, void) { - m_xCharInfoLabel->set_label(pView->GetCharInfoText()); + m_xCharInfoLabel->set_label(rView.GetCharInfoText()); } -IMPL_LINK(SfxCharmapCtrl, CharClickHdl, SvxCharView*, pView, void) +IMPL_LINK(SfxCharmapCtrl, CharClickHdl, SvxCharView&, rView, void) { m_xControl->EndPopupMode(); - pView->InsertCharToDoc(); + rView.InsertCharToDoc(); } IMPL_LINK_NOARG(SfxCharmapCtrl, OpenDlgHdl, weld::Button&, void) diff --git a/sfx2/source/control/charwin.cxx b/sfx2/source/control/charwin.cxx index cd5a14e30982..2a7c4f77e005 100644 --- a/sfx2/source/control/charwin.cxx +++ b/sfx2/source/control/charwin.cxx @@ -61,7 +61,7 @@ void SvxCharView::GetFocus() { Invalidate(); if (maFocusInHdl.IsSet()) - maFocusInHdl.Call(this); + maFocusInHdl.Call(*this); } void SvxCharView::LoseFocus() { Invalidate(); } @@ -117,7 +117,7 @@ bool SvxCharView::MouseButtonDown(const MouseEvent& rMEvt) InsertCharToDoc(); } - maMouseClickHdl.Call(this); + maMouseClickHdl.Call(*this); return true; } @@ -174,9 +174,9 @@ void SvxCharView::createContextMenu(const Point& rPosition) const OUString sMenuId = xItemMenu->popup_at_rect(pDrawingArea, tools::Rectangle(rPosition, Size(1, 1))); if (sMenuId == u"clearchar") - maClearClickHdl.Call(this); + maClearClickHdl.Call(*this); else if (sMenuId == u"clearallchar") - maClearAllClickHdl.Call(this); + maClearAllClickHdl.Call(*this); Invalidate(); } @@ -271,19 +271,19 @@ void SvxCharView::Paint(vcl::RenderContext& rRenderContext, const tools::Rectang rRenderContext.SetFont(aOrigFont); } -void SvxCharView::setFocusInHdl(const Link<SvxCharView*, void>& rLink) { maFocusInHdl = rLink; } +void SvxCharView::setFocusInHdl(const Link<SvxCharView&, void>& rLink) { maFocusInHdl = rLink; } -void SvxCharView::setMouseClickHdl(const Link<SvxCharView*, void>& rLink) +void SvxCharView::setMouseClickHdl(const Link<SvxCharView&, void>& rLink) { maMouseClickHdl = rLink; } -void SvxCharView::setClearClickHdl(const Link<SvxCharView*, void>& rLink) +void SvxCharView::setClearClickHdl(const Link<SvxCharView&, void>& rLink) { maClearClickHdl = rLink; } -void SvxCharView::setClearAllClickHdl(const Link<SvxCharView*, void>& rLink) +void SvxCharView::setClearAllClickHdl(const Link<SvxCharView&, void>& rLink) { maClearAllClickHdl = rLink; } diff --git a/svx/source/dialog/cuicharmap.cxx b/svx/source/dialog/cuicharmap.cxx index e3959aa64884..ba6fd0c5923a 100644 --- a/svx/source/dialog/cuicharmap.cxx +++ b/svx/source/dialog/cuicharmap.cxx @@ -526,20 +526,19 @@ IMPL_LINK_NOARG(SvxCharacterMap, SearchUpdateHdl, weld::Entry&, void) } } - -IMPL_LINK(SvxCharacterMap, CharClickHdl, SvxCharView*, rView, void) +IMPL_LINK(SvxCharacterMap, CharClickHdl, SvxCharView&, rView, void) { - rView->GrabFocus(); + rView.GrabFocus(); - SetCharFont(rView->GetFont()); - m_aShowChar.SetText( rView->GetText() ); - m_aShowChar.SetFont(rView->GetFont()); + SetCharFont(rView.GetFont()); + m_aShowChar.SetText(rView.GetText()); + m_aShowChar.SetFont(rView.GetFont()); m_aShowChar.Invalidate(); - setFavButtonState(rView->GetText(), rView->GetFont().GetFamilyName());//check state + setFavButtonState(rView.GetText(), rView.GetFont().GetFamilyName()); //check state // Get the hexadecimal code - OUString charValue = rView->GetText(); + OUString charValue = rView.GetText(); sal_UCS4 cChar = charValue.iterateCodePoints(&o3tl::temporary(sal_Int32(1)), -1); OUString aHexText = OUString::number(cChar, 16).toAsciiUpperCase(); @@ -550,7 +549,7 @@ IMPL_LINK(SvxCharacterMap, CharClickHdl, SvxCharView*, rView, void) m_xDecimalCodeText->set_text(aDecimalText); setCharName(cChar); - rView->Invalidate(); + rView.Invalidate(); m_xOKBtn->set_sensitive(true); }
