chart2/source/controller/itemsetwrapper/ItemConverter.cxx | 2 +- include/svl/itemiter.hxx | 3 +++ svl/source/items/itemiter.cxx | 6 ++++++ sw/source/uibase/wrtsh/wrtsh1.cxx | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-)
New commits: commit 51f46ddaccd9a2c16b6a4a80b7627af7b13850f4 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sat May 28 16:53:01 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat May 28 17:37:07 2022 +0200 add GetItemState to SfxItemIter, the same way I did to SfxWhichIter to speed up GetItemState while iterating Change-Id: Ibe092e7581a5be0160eed52472122afe7e0ef377 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135076 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/chart2/source/controller/itemsetwrapper/ItemConverter.cxx b/chart2/source/controller/itemsetwrapper/ItemConverter.cxx index 9ca38f4919e6..d79079b77142 100644 --- a/chart2/source/controller/itemsetwrapper/ItemConverter.cxx +++ b/chart2/source/controller/itemsetwrapper/ItemConverter.cxx @@ -157,7 +157,7 @@ bool ItemConverter::ApplyItemSet( const SfxItemSet & rItemSet ) for (const SfxPoolItem* pItem = aIter.GetCurItem(); pItem; pItem = aIter.NextItem()) { - if( rItemSet.GetItemState( pItem->Which(), false ) == SfxItemState::SET ) + if( aIter.GetItemState( false ) == SfxItemState::SET ) { if( GetItemProperty( pItem->Which(), aProperty )) { diff --git a/include/svl/itemiter.hxx b/include/svl/itemiter.hxx index be2bf2e4360d..dfe3c9dc6e22 100644 --- a/include/svl/itemiter.hxx +++ b/include/svl/itemiter.hxx @@ -47,6 +47,9 @@ public: sal_uInt16 GetFirstPos() const { return m_nStart; } sal_uInt16 GetLastPos() const { return m_nEnd; } + SfxItemState GetItemState(bool bSrchInParent = true, + const SfxPoolItem** ppItem = nullptr) const; + private: const SfxPoolItem* ImplNextItem(); }; diff --git a/svl/source/items/itemiter.cxx b/svl/source/items/itemiter.cxx index bd5890e07c4a..b1bdedf416e0 100644 --- a/svl/source/items/itemiter.cxx +++ b/svl/source/items/itemiter.cxx @@ -56,4 +56,10 @@ const SfxPoolItem* SfxItemIter::ImplNextItem() return *(ppFnd + m_nCurrent); } +SfxItemState SfxItemIter::GetItemState(bool bSrchInParent, const SfxPoolItem** ppItem) const +{ + sal_uInt16 nWhich = (*(m_rSet.m_ppItems + m_nCurrent))->Which(); + return m_rSet.GetItemStateImpl(nWhich, bSrchInParent, ppItem, m_nCurrent); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/wrtsh/wrtsh1.cxx b/sw/source/uibase/wrtsh/wrtsh1.cxx index 3bc0b76872a2..8fef09eac5e8 100644 --- a/sw/source/uibase/wrtsh/wrtsh1.cxx +++ b/sw/source/uibase/wrtsh/wrtsh1.cxx @@ -1877,7 +1877,7 @@ void SwWrtShell::AutoUpdatePara(SwTextFormatColl* pColl, const SfxItemSet& rStyl if(!IsInvalidItem(pParaItem)) { sal_uInt16 nWhich = pParaItem->Which(); - if(SfxItemState::SET == aCoreSet.GetItemState(nWhich) && + if(SfxItemState::SET == aParaIter.GetItemState() && SfxItemState::SET == rStyleSet.GetItemState(nWhich)) { aCoreSet.ClearItem(nWhich);