accessibility/source/extended/textwindowaccessibility.cxx | 8 - basctl/source/accessibility/accessibledialogwindow.cxx | 3 basctl/source/basicide/baside2b.cxx | 24 ++--- basctl/source/basicide/basidesh.cxx | 6 - basic/source/sbx/sbxcoll.cxx | 67 ++++++-------- basic/source/sbx/sbxobj.cxx | 10 -- sc/source/ui/docshell/servobj.cxx | 19 +-- sfx2/source/doc/printhelper.cxx | 8 + sfx2/source/doc/sfxbasemodel.cxx | 4 sw/source/core/layout/sectfrm.cxx | 3 sw/source/uibase/docvw/srcedtw.cxx | 7 - vcl/source/edit/vclmedit.cxx | 6 - 12 files changed, 72 insertions(+), 93 deletions(-)
New commits: commit ac9eaf5d11e5f44d7faa628233438a3b1bb89d6f Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Sep 4 11:11:57 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Sep 5 08:10:26 2024 +0200 use less dynamic_cast when broadcasting SfxHint Change-Id: If4d33cbbf36a9ad495b80a7347b39d0f4bc0405e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172857 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/accessibility/source/extended/textwindowaccessibility.cxx b/accessibility/source/extended/textwindowaccessibility.cxx index 375c2900beb5..9021f85af610 100644 --- a/accessibility/source/extended/textwindowaccessibility.cxx +++ b/accessibility/source/extended/textwindowaccessibility.cxx @@ -1391,12 +1391,7 @@ void SAL_CALL Document::disposing() // virtual void Document::Notify(::SfxBroadcaster &, ::SfxHint const & rHint) { - const TextHint* pTextHint = dynamic_cast<const TextHint*>(&rHint); - if (!pTextHint) - return; - - ::TextHint const & rTextHint = *pTextHint; - switch (rTextHint.GetId()) + switch (rHint.GetId()) { case SfxHintId::TextParaInserted: case SfxHintId::TextParaRemoved: @@ -1420,6 +1415,7 @@ void Document::Notify(::SfxBroadcaster &, ::SfxHint const & rHint) if (!isAlive()) break; + const TextHint& rTextHint = static_cast<const TextHint&>(rHint); m_aParagraphNotifications.push(rTextHint); break; } diff --git a/basctl/source/accessibility/accessibledialogwindow.cxx b/basctl/source/accessibility/accessibledialogwindow.cxx index 8f43fa4b2556..b7740a6484b5 100644 --- a/basctl/source/accessibility/accessibledialogwindow.cxx +++ b/basctl/source/accessibility/accessibledialogwindow.cxx @@ -421,8 +421,9 @@ awt::Rectangle AccessibleDialogWindow::implGetBounds() void AccessibleDialogWindow::Notify( SfxBroadcaster&, const SfxHint& rHint ) { - if (SdrHint const* pSdrHint = dynamic_cast<SdrHint const*>(&rHint)) + if (rHint.GetId() == SfxHintId::ThisIsAnSdrHint) { + SdrHint const* pSdrHint = static_cast<SdrHint const*>(&rHint); switch ( pSdrHint->GetKind() ) { case SdrHintKind::ObjectInserted: diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index 8bf97a6c09a6..2e6ebc14349e 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -1138,12 +1138,7 @@ void EditorWindow::CreateEditEngine() void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) { - TextHint const* pTextHint = dynamic_cast<TextHint const*>(&rHint); - if (!pTextHint) - return; - - TextHint const& rTextHint = *pTextHint; - if( rTextHint.GetId() == SfxHintId::TextViewScrolled ) + if( rHint.GetId() == SfxHintId::TextViewScrolled ) { rModulWindow.GetEditVScrollBar().SetThumbPos( pEditView->GetStartDocPos().Y() ); rModulWindow.GetEditHScrollBar().SetThumbPos( pEditView->GetStartDocPos().X() ); @@ -1152,7 +1147,7 @@ void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) rModulWindow.GetLineNumberWindow().DoScroll ( rModulWindow.GetLineNumberWindow().GetCurYOffset() - pEditView->GetStartDocPos().Y() ); } - else if( rTextHint.GetId() == SfxHintId::TextHeightChanged ) + else if( rHint.GetId() == SfxHintId::TextHeightChanged ) { if ( pEditView->GetStartDocPos().Y() ) { @@ -1166,7 +1161,7 @@ void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) SetScrollBarRanges(); } - else if( rTextHint.GetId() == SfxHintId::TextFormatted ) + else if( rHint.GetId() == SfxHintId::TextFormatted ) { const tools::Long nWidth = pEditEngine->CalcTextWidth(); @@ -1181,20 +1176,23 @@ void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) if ( nCurTextWidth != nPrevTextWidth ) SetScrollBarRanges(); } - else if( rTextHint.GetId() == SfxHintId::TextParaInserted ) + else if( rHint.GetId() == SfxHintId::TextParaInserted ) { + TextHint const & rTextHint = static_cast<TextHint const&>(rHint); ParagraphInsertedDeleted( rTextHint.GetValue(), true ); DoDelayedSyntaxHighlight( rTextHint.GetValue() ); } - else if( rTextHint.GetId() == SfxHintId::TextParaRemoved ) + else if( rHint.GetId() == SfxHintId::TextParaRemoved ) { + TextHint const & rTextHint = static_cast<TextHint const&>(rHint); ParagraphInsertedDeleted( rTextHint.GetValue(), false ); } - else if( rTextHint.GetId() == SfxHintId::TextParaContentChanged ) + else if( rHint.GetId() == SfxHintId::TextParaContentChanged ) { + TextHint const & rTextHint = static_cast<TextHint const&>(rHint); DoDelayedSyntaxHighlight( rTextHint.GetValue() ); } - else if( rTextHint.GetId() == SfxHintId::TextViewSelectionChanged ) + else if( rHint.GetId() == SfxHintId::TextViewSelectionChanged ) { if (SfxBindings* pBindings = GetBindingsPtr()) { @@ -1202,7 +1200,7 @@ void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) pBindings->Invalidate( SID_COPY ); } } - else if( rTextHint.GetId() == SfxHintId::TextViewCaretChanged ) + else if( rHint.GetId() == SfxHintId::TextViewCaretChanged ) { // Check whether the line number where the caret is has changed and the // highlight needs to be redrawn diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx index 3638ef566a64..4cff365345f7 100644 --- a/basctl/source/basicide/basidesh.cxx +++ b/basctl/source/basicide/basidesh.cxx @@ -532,11 +532,7 @@ void Shell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) aObjectCatalog->UpdateEntries(); } - SbxHint const* pSbxHint = dynamic_cast<SbxHint const*>(&rHint); - if (!pSbxHint) - return; - - const SfxHintId nHintId = pSbxHint->GetId(); + const SfxHintId nHintId = rHint.GetId(); if ( ( nHintId != SfxHintId::BasicStart ) && ( nHintId != SfxHintId::BasicStop ) ) return; diff --git a/basic/source/sbx/sbxcoll.cxx b/basic/source/sbx/sbxcoll.cxx index 0aeffc6ecefc..0bb315c496a8 100644 --- a/basic/source/sbx/sbxcoll.cxx +++ b/basic/source/sbx/sbxcoll.cxx @@ -103,47 +103,42 @@ SbxVariable* SbxCollection::Find( const OUString& rName, SbxClassType t ) void SbxCollection::Notify( SfxBroadcaster& rCst, const SfxHint& rHint ) { - const SbxHint* p = dynamic_cast<const SbxHint*>(&rHint); - if( p ) + const SfxHintId nId = rHint.GetId(); + if( nId == SfxHintId::BasicDataWanted || nId == SfxHintId::BasicDataChanged ) { - const SfxHintId nId = p->GetId(); - bool bRead = ( nId == SfxHintId::BasicDataWanted ); - bool bWrite = ( nId == SfxHintId::BasicDataChanged ); + const SbxHint* p = static_cast<const SbxHint*>(&rHint); SbxVariable* pVar = p->GetVar(); SbxArray* pArg = pVar->GetParameters(); - if( bRead || bWrite ) + OUString aVarName( pVar->GetName() ); + if( pVar == this ) { - OUString aVarName( pVar->GetName() ); - if( pVar == this ) - { - CollItem( pArg ); - } - else if( pVar->GetHashCode() == nCountHash - && aVarName.equalsIgnoreAsciiCase( pCount ) ) - { - pVar->PutLong(sal::static_int_cast<sal_Int32>(pObjs->Count())); - } - else if( pVar->GetHashCode() == nAddHash - && aVarName.equalsIgnoreAsciiCase( pAdd ) ) - { - CollAdd( pArg ); - } - else if( pVar->GetHashCode() == nItemHash - && aVarName.equalsIgnoreAsciiCase( pItem ) ) - { - CollItem( pArg ); - } - else if( pVar->GetHashCode() == nRemoveHash - && aVarName.equalsIgnoreAsciiCase( pRemove ) ) - { - CollRemove( pArg ); - } - else - { - SbxObject::Notify( rCst, rHint ); - } - return; + CollItem( pArg ); + } + else if( pVar->GetHashCode() == nCountHash + && aVarName.equalsIgnoreAsciiCase( pCount ) ) + { + pVar->PutLong(sal::static_int_cast<sal_Int32>(pObjs->Count())); + } + else if( pVar->GetHashCode() == nAddHash + && aVarName.equalsIgnoreAsciiCase( pAdd ) ) + { + CollAdd( pArg ); + } + else if( pVar->GetHashCode() == nItemHash + && aVarName.equalsIgnoreAsciiCase( pItem ) ) + { + CollItem( pArg ); + } + else if( pVar->GetHashCode() == nRemoveHash + && aVarName.equalsIgnoreAsciiCase( pRemove ) ) + { + CollRemove( pArg ); + } + else + { + SbxObject::Notify( rCst, rHint ); } + return; } SbxObject::Notify( rCst, rHint ); } diff --git a/basic/source/sbx/sbxobj.cxx b/basic/source/sbx/sbxobj.cxx index 66933a6d4cbf..0217d03ab520 100644 --- a/basic/source/sbx/sbxobj.cxx +++ b/basic/source/sbx/sbxobj.cxx @@ -139,16 +139,14 @@ void SbxObject::Clear() void SbxObject::Notify( SfxBroadcaster&, const SfxHint& rHint ) { - const SbxHint* p = dynamic_cast<const SbxHint*>(&rHint); - if( !p ) - return; - - const SfxHintId nId = p->GetId(); + const SfxHintId nId = rHint.GetId(); bool bRead = ( nId == SfxHintId::BasicDataWanted ); bool bWrite = ( nId == SfxHintId::BasicDataChanged ); - SbxVariable* pVar = p->GetVar(); if( !(bRead || bWrite) ) return; + const SbxHint* p = static_cast<const SbxHint*>(&rHint); + + SbxVariable* pVar = p->GetVar(); OUString aVarName( pVar->GetName() ); sal_uInt16 nHash_ = MakeHashCode( aVarName ); diff --git a/sc/source/ui/docshell/servobj.cxx b/sc/source/ui/docshell/servobj.cxx index 4367c7140cc9..78b83a00179a 100644 --- a/sc/source/ui/docshell/servobj.cxx +++ b/sc/source/ui/docshell/servobj.cxx @@ -227,11 +227,11 @@ void ScServerObject::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { // must be from Area broadcasters - const ScHint* pScHint = dynamic_cast<const ScHint*>( &rHint ); - if (pScHint && (pScHint->GetId() == SfxHintId::ScDataChanged)) + if (rHint.GetId() == SfxHintId::ScDataChanged) bDataChanged = true; - else if (const ScAreaChangedHint *pChgHint = dynamic_cast<const ScAreaChangedHint*>(&rHint)) // position of broadcaster changed + else if (rHint.GetId() == SfxHintId::ScAreaChanged) // position of broadcaster changed { + const ScAreaChangedHint *pChgHint = static_cast<const ScAreaChangedHint*>(&rHint); const ScRange& aNewRange = pChgHint->GetRange(); if ( aRange != aNewRange ) { @@ -239,15 +239,12 @@ void ScServerObject::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) bDataChanged = true; } } - else + else if (rHint.GetId() == SfxHintId::Dying) { - if (rHint.GetId() == SfxHintId::Dying) - { - // If the range is being deleted, listening must be restarted - // after the deletion is complete (done in GetData) - bRefreshListener = true; - bDataChanged = true; - } + // If the range is being deleted, listening must be restarted + // after the deletion is complete (done in GetData) + bRefreshListener = true; + bDataChanged = true; } } diff --git a/sfx2/source/doc/printhelper.cxx b/sfx2/source/doc/printhelper.cxx index 8ef4d4eb1e4d..ddb766e72225 100644 --- a/sfx2/source/doc/printhelper.cxx +++ b/sfx2/source/doc/printhelper.cxx @@ -756,9 +756,13 @@ void SAL_CALL SfxPrintHelper::print(const uno::Sequence< beans::PropertyValue >& void IMPL_PrintListener_DataContainer::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { - const SfxPrintingHint* pPrintHint = dynamic_cast<const SfxPrintingHint*>(&rHint); + if (rHint.GetId() != SfxHintId::ThisIsAnSfxEventHint) + return; + const SfxEventHint& rEventHint = static_cast<const SfxEventHint&>(rHint); + if (rEventHint.GetEventId() != SfxEventHintId::PrintDoc) + return; + const SfxPrintingHint* pPrintHint = static_cast<const SfxPrintingHint*>(&rHint); if ( &rBC != m_pObjectShell.get() - || !pPrintHint || pPrintHint->GetWhich() == SFX_PRINTABLESTATE_CANCELJOB ) return; diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx index a217dc252a85..2db0f2b857a3 100644 --- a/sfx2/source/doc/sfxbasemodel.cxx +++ b/sfx2/source/doc/sfxbasemodel.cxx @@ -2983,8 +2983,8 @@ void SfxBaseModel::Notify( SfxBroadcaster& rBC , } Any aSupplement; - if (const SfxPrintingHint* pPrintingHint = dynamic_cast<const SfxPrintingHint*>(&rHint)) - aSupplement <<= pPrintingHint->GetWhich(); + if (rNamedHint.GetEventId() == SfxEventHintId::PrintDoc) + aSupplement <<= static_cast<const SfxPrintingHint*>(&rHint)->GetWhich(); const SfxViewEventHint* pViewHint = dynamic_cast<const SfxViewEventHint*>(&rHint); postEvent_Impl( rNamedHint.GetEventName(), pViewHint ? pViewHint->GetController() : Reference< frame::XController2 >(), aSupplement ); } diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx index 2d05992e6b50..4b307c4c4f9b 100644 --- a/sw/source/core/layout/sectfrm.cxx +++ b/sw/source/core/layout/sectfrm.cxx @@ -2723,8 +2723,9 @@ void SwSectionFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint) SetCompletePaint(); } } - else if(const auto pHint = dynamic_cast<const SwSectionFrameMoveAndDeleteHint*>(&rHint)) + else if(rHint.GetId() == SfxHintId::SwSectionFrameMoveAndDelete) { + const auto pHint = static_cast<const SwSectionFrameMoveAndDeleteHint*>(&rHint); // #i117863# if(&rMod != GetDep()) return; diff --git a/sw/source/uibase/docvw/srcedtw.cxx b/sw/source/uibase/docvw/srcedtw.cxx index 8fd5e2f3b797..1fdc55838f29 100644 --- a/sw/source/uibase/docvw/srcedtw.cxx +++ b/sw/source/uibase/docvw/srcedtw.cxx @@ -707,11 +707,7 @@ void SwSrcEditWindow::ImpDoHighlight( std::u16string_view aSource, sal_uInt16 nL void SwSrcEditWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) { - const TextHint* pTextHint = dynamic_cast<const TextHint*>(&rHint); - if (!pTextHint) - return; - - switch (pTextHint->GetId()) + switch (rHint.GetId()) { case SfxHintId::TextViewScrolled: m_pHScrollbar->SetThumbPos( m_pTextView->GetStartDocPos().X() ); @@ -729,6 +725,7 @@ void SwSrcEditWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) case SfxHintId::TextParaContentChanged: if ( !m_bHighlighting ) { + auto pTextHint = static_cast<const TextHint*>(&rHint); m_aSyntaxLineTable.insert( o3tl::narrowing<sal_uInt16>(pTextHint->GetValue()) ); m_aSyntaxIdle.Start(); } diff --git a/vcl/source/edit/vclmedit.cxx b/vcl/source/edit/vclmedit.cxx index d5197358591d..8bb18818e6cb 100644 --- a/vcl/source/edit/vclmedit.cxx +++ b/vcl/source/edit/vclmedit.cxx @@ -441,11 +441,7 @@ OUString ImpVclMEdit::GetTextLines( LineEnd aSeparator ) const void ImpVclMEdit::Notify( SfxBroadcaster&, const SfxHint& rHint ) { - const TextHint* pTextHint = dynamic_cast<const TextHint*>(&rHint); - if ( !pTextHint ) - return; - - switch (pTextHint->GetId()) + switch (rHint.GetId()) { case SfxHintId::TextViewScrolled: if (mpHScrollBar->IsVisible())