editeng/source/editeng/impedit5.cxx | 2 - include/svl/hint.hxx | 2 + sc/source/ui/condformat/condformatdlgentry.cxx | 4 +- sc/source/ui/condformat/condformateasydlg.cxx | 3 +- sc/source/ui/docshell/docsh4.cxx | 21 +++++++-------- svx/source/sdr/properties/attributeproperties.cxx | 1 svx/source/sdr/properties/customshapeproperties.cxx | 4 ++ svx/source/sdr/properties/textproperties.cxx | 28 +++++++++----------- svx/source/tbxctrls/StylesPreviewWindow.cxx | 3 +- sw/source/uibase/app/docstyle.cxx | 6 ++-- 10 files changed, 40 insertions(+), 34 deletions(-)
New commits: commit 9c5fda14fff397d5d503f749ad019791d7e4ef83 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Mar 6 16:20:41 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Mar 7 06:52:22 2024 +0100 tdf#158773 reduce dynamic_cast'ing in CustomShapeProperties::Notify shaves 2% off the load time Change-Id: I579825bd6101b57a44b0f3118ede17ec2393d9d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164477 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx index 0469d43235d0..6b1a303ae8da 100644 --- a/editeng/source/editeng/impedit5.cxx +++ b/editeng/source/editeng/impedit5.cxx @@ -152,7 +152,7 @@ void ImpEditEngine::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) SfxStyleSheet* pStyle = static_cast<SfxStyleSheet*>( pStyleSheetHint->GetStyleSheet() ); RemoveStyleFromParagraphs( pStyle ); } - else if ( nId == SfxHintId::StyleSheetModified ) + else if ( nId == SfxHintId::StyleSheetModified || nId == SfxHintId::StyleSheetModifiedExtended ) { const SfxStyleSheetHint* pStyleSheetHint = static_cast<const SfxStyleSheetHint*>(&rHint); SfxStyleSheet* pStyle = static_cast<SfxStyleSheet*>( pStyleSheetHint->GetStyleSheet() ); diff --git a/include/svl/hint.hxx b/include/svl/hint.hxx index ec0c7b1d9872..860ea4219c56 100644 --- a/include/svl/hint.hxx +++ b/include/svl/hint.hxx @@ -104,6 +104,7 @@ enum class SfxHintId { // SFX stylesheet StyleSheetCreated, // new StyleSheetModified, // changed + StyleSheetModifiedExtended, // changed, but using the SfxStyleSheetModifiedHint, not the SfxStyleSheetHint StyleSheetChanged, // erased and re-created (replaced) StyleSheetErased, // erased StyleSheetInDestruction, // in the process of being destructed @@ -229,6 +230,7 @@ inline std::basic_ostream<charT, traits> & operator <<( case SfxHintId::ScAccWindowResized: return stream << "ScAccWindowResized"; case SfxHintId::StyleSheetCreated: return stream << "StyleSheetCreated"; case SfxHintId::StyleSheetModified: return stream << "StyleSheetModified"; + case SfxHintId::StyleSheetModifiedExtended: return stream << "StyleSheetModifiedExtended"; case SfxHintId::StyleSheetChanged: return stream << "StyleSheetChanged"; case SfxHintId::StyleSheetErased: return stream << "StyleSheetErased"; case SfxHintId::StyleSheetInDestruction: return stream << "StyleSheetInDestruction"; diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx index ade0cede7cef..860e8c225150 100644 --- a/sc/source/ui/condformat/condformatdlgentry.cxx +++ b/sc/source/ui/condformat/condformatdlgentry.cxx @@ -419,7 +419,7 @@ void UpdateStyleList(weld::ComboBox& rLbStyle, const ScDocument* pDoc) void ScConditionFrmtEntry::Notify(SfxBroadcaster&, const SfxHint& rHint) { - if(rHint.GetId() == SfxHintId::StyleSheetModified) + if(rHint.GetId() == SfxHintId::StyleSheetModified || rHint.GetId() == SfxHintId::StyleSheetModifiedExtended) { if(!mbIsInStyleCreate) UpdateStyleList(*mxLbStyle, mpDoc); @@ -1282,7 +1282,7 @@ void ScDateFrmtEntry::SetInactive() void ScDateFrmtEntry::Notify( SfxBroadcaster&, const SfxHint& rHint ) { - if(rHint.GetId() == SfxHintId::StyleSheetModified) + if(rHint.GetId() == SfxHintId::StyleSheetModified || rHint.GetId() == SfxHintId::StyleSheetModifiedExtended) { if(!mbIsInStyleCreate) UpdateStyleList(*mxLbStyle, mpDoc); diff --git a/sc/source/ui/condformat/condformateasydlg.cxx b/sc/source/ui/condformat/condformateasydlg.cxx index a368ec310c7d..ba28d1e687dd 100644 --- a/sc/source/ui/condformat/condformateasydlg.cxx +++ b/sc/source/ui/condformat/condformateasydlg.cxx @@ -154,7 +154,8 @@ ConditionalFormatEasyDialog::~ConditionalFormatEasyDialog() {} void ConditionalFormatEasyDialog::Notify(SfxBroadcaster&, const SfxHint& rHint) { - if (rHint.GetId() == SfxHintId::StyleSheetModified) + if (rHint.GetId() == SfxHintId::StyleSheetModified + || rHint.GetId() == SfxHintId::StyleSheetModifiedExtended) UpdateStyleList(mpDocument, *mxStyles); } diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx index ca2f5d2b41f9..a9419dbb5b57 100644 --- a/sc/source/ui/docshell/docsh4.cxx +++ b/sc/source/ui/docshell/docsh4.cxx @@ -1677,16 +1677,17 @@ void ScDocShell::NotifyStyle( const SfxStyleSheetHint& rHint ) if ( pStyle->GetFamily() == SfxStyleFamily::Page ) { - if ( nId == SfxHintId::StyleSheetModified ) + if ( nId == SfxHintId::StyleSheetModified || nId == SfxHintId::StyleSheetModifiedExtended ) { ScDocShellModificator aModificator( *this ); const OUString& aNewName = pStyle->GetName(); OUString aOldName = aNewName; - const SfxStyleSheetModifiedHint* pExtendedHint = dynamic_cast<const SfxStyleSheetModifiedHint*>(&rHint); // name changed? - if (pExtendedHint) - aOldName = pExtendedHint->GetOldName(); - + if ( nId == SfxHintId::StyleSheetModifiedExtended ) + { + const SfxStyleSheetModifiedHint& rExtendedHint = static_cast<const SfxStyleSheetModifiedHint&>(rHint); // name changed? + aOldName = rExtendedHint.GetOldName(); + } if ( aNewName != aOldName ) m_pDocument->RenamePageStyleInUse( aOldName, aNewName ); @@ -1701,7 +1702,7 @@ void ScDocShell::NotifyStyle( const SfxStyleSheetHint& rHint ) aModificator.SetDocumentModified(); - if (pExtendedHint) + if (nId == SfxHintId::StyleSheetModifiedExtended) { SfxBindings* pBindings = GetViewBindings(); if (pBindings) @@ -1717,13 +1718,11 @@ void ScDocShell::NotifyStyle( const SfxStyleSheetHint& rHint ) } else if ( pStyle->GetFamily() == SfxStyleFamily::Para ) { - if ( nId == SfxHintId::StyleSheetModified) + if (nId == SfxHintId::StyleSheetModifiedExtended) { + const SfxStyleSheetModifiedHint& rExtendedHint = static_cast<const SfxStyleSheetModifiedHint&>(rHint); const OUString& aNewName = pStyle->GetName(); - OUString aOldName = aNewName; - const SfxStyleSheetModifiedHint* pExtendedHint = dynamic_cast<const SfxStyleSheetModifiedHint*>(&rHint); - if (pExtendedHint) - aOldName = pExtendedHint->GetOldName(); + const OUString& aOldName = rExtendedHint.GetOldName(); if ( aNewName != aOldName ) { for(SCTAB i = 0; i < m_pDocument->GetTableCount(); ++i) diff --git a/svx/source/sdr/properties/attributeproperties.cxx b/svx/source/sdr/properties/attributeproperties.cxx index 2b347c8d8304..9fc67078a847 100644 --- a/svx/source/sdr/properties/attributeproperties.cxx +++ b/svx/source/sdr/properties/attributeproperties.cxx @@ -434,6 +434,7 @@ namespace sdr::properties break; } case SfxHintId::StyleSheetModified : + case SfxHintId::StyleSheetModifiedExtended: case SfxHintId::StyleSheetChanged : { // notify change diff --git a/svx/source/sdr/properties/customshapeproperties.cxx b/svx/source/sdr/properties/customshapeproperties.cxx index c48e4d3833d4..ddf530e8d9ad 100644 --- a/svx/source/sdr/properties/customshapeproperties.cxx +++ b/svx/source/sdr/properties/customshapeproperties.cxx @@ -206,7 +206,9 @@ namespace sdr::properties bool bRemoveRenderGeometry = false; - if (rHint.GetId() == SfxHintId::StyleSheetModified || rHint.GetId() == SfxHintId::StyleSheetChanged) + if (rHint.GetId() == SfxHintId::StyleSheetModified || + rHint.GetId() == SfxHintId::StyleSheetModifiedExtended || + rHint.GetId() == SfxHintId::StyleSheetChanged) { const SfxStyleSheetHint* pStyleHint = static_cast<const SfxStyleSheetHint*>(&rHint); if ( pStyleHint->GetStyleSheet() == GetStyleSheet() ) diff --git a/svx/source/sdr/properties/textproperties.cxx b/svx/source/sdr/properties/textproperties.cxx index 17f63d044dcf..42a71dd3b1fb 100644 --- a/svx/source/sdr/properties/textproperties.cxx +++ b/svx/source/sdr/properties/textproperties.cxx @@ -588,24 +588,22 @@ namespace sdr::properties pParaObj->ClearPortionInfo(); } } - else if (nId == SfxHintId::StyleSheetModified && dynamic_cast<const SfxStyleSheetBasePool *>(&rBC) != nullptr) + else if (nId == SfxHintId::StyleSheetModifiedExtended) { - const SfxStyleSheetModifiedHint* pExtendedHint = dynamic_cast<const SfxStyleSheetModifiedHint*>(&rHint); - if (pExtendedHint) - { - const OUString& aOldName(pExtendedHint->GetOldName()); - OUString aNewName(pExtendedHint->GetStyleSheet()->GetName()); - SfxStyleFamily eFamily = pExtendedHint->GetStyleSheet()->GetFamily(); + assert(dynamic_cast<const SfxStyleSheetBasePool *>(&rBC) != nullptr); + const SfxStyleSheetModifiedHint& rExtendedHint = static_cast<const SfxStyleSheetModifiedHint&>(rHint); + const OUString& aOldName(rExtendedHint.GetOldName()); + OUString aNewName(rExtendedHint.GetStyleSheet()->GetName()); + SfxStyleFamily eFamily = rExtendedHint.GetStyleSheet()->GetFamily(); - if(aOldName != aNewName) + if(aOldName != aNewName) + { + sal_Int32 nText = rTextProvider.getTextCount(); + while (nText--) { - sal_Int32 nText = rTextProvider.getTextCount(); - while (nText--) - { - OutlinerParaObject* pParaObj = rTextProvider.getText( nText )->GetOutlinerParaObject(); - if( pParaObj ) - pParaObj->ChangeStyleSheetName(eFamily, aOldName, aNewName); - } + OutlinerParaObject* pParaObj = rTextProvider.getText( nText )->GetOutlinerParaObject(); + if( pParaObj ) + pParaObj->ChangeStyleSheetName(eFamily, aOldName, aNewName); } } } diff --git a/svx/source/tbxctrls/StylesPreviewWindow.cxx b/svx/source/tbxctrls/StylesPreviewWindow.cxx index da560feb0e15..d7f46bda4318 100644 --- a/svx/source/tbxctrls/StylesPreviewWindow.cxx +++ b/svx/source/tbxctrls/StylesPreviewWindow.cxx @@ -173,7 +173,8 @@ StylePoolChangeListener::~StylePoolChangeListener() void StylePoolChangeListener::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint) { - if (rHint.GetId() == SfxHintId::StyleSheetModified) + if (rHint.GetId() == SfxHintId::StyleSheetModified + || rHint.GetId() == SfxHintId::StyleSheetModifiedExtended) StylePreviewCache::ClearCache(true); m_pPreviewControl->RequestStylesListUpdate(); } diff --git a/sw/source/uibase/app/docstyle.cxx b/sw/source/uibase/app/docstyle.cxx index 7863c4545bcb..89cf5055175e 100644 --- a/sw/source/uibase/app/docstyle.cxx +++ b/sw/source/uibase/app/docstyle.cxx @@ -142,13 +142,15 @@ public: auto nId = pHint->GetId(); auto pDocStyleSheet = pHint->GetStyleSheet(); - auto pExtendedHint = dynamic_cast<const SfxStyleSheetModifiedHint*>(&rHint); + const SfxStyleSheetModifiedHint* pExtendedHint = nullptr; + if (nId == SfxHintId::StyleSheetModifiedExtended) + pExtendedHint = static_cast<const SfxStyleSheetModifiedHint*>(&rHint); const OUString aName = pExtendedHint ? pExtendedHint->GetOldName() : pDocStyleSheet->GetName(); auto pStyleSheet = SfxStyleSheetPool::Find(aName, pDocStyleSheet->GetFamily()); if (!pStyleSheet) return; - if (nId == SfxHintId::StyleSheetModified) + if (nId == SfxHintId::StyleSheetModified || nId == SfxHintId::StyleSheetModifiedExtended) { pStyleSheet->SetName(pDocStyleSheet->GetName()); UpdateStyleHierarchyFrom(pStyleSheet, pDocStyleSheet);