summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2021-04-12 13:07:56 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-04-12 17:45:19 +0200
commitfe23e35ba5705d7f51f69c3f4e7ccd6c5b575a6b (patch)
treebace053173689b600f8b6a75145e07cc2b933743 /sw/source
parent27911b0455d8dcc08a0702372492a6ce00250cb7 (diff)
less copying in SfxItemPropertyMap::getPropertyEntries
we can just expose the map now, and avoid copying all the properties Change-Id: Icb22975508582268dfa96e41eb98ac01e7f51317 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113982 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/access/accpara.cxx18
-rw-r--r--sw/source/core/unocore/unocrsrhelper.cxx8
-rw-r--r--sw/source/core/unocore/unosrch.cxx451
-rw-r--r--sw/source/core/unocore/unostyle.cxx18
4 files changed, 191 insertions, 304 deletions
diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx
index f8e9ac6d925c..e4008dc10a41 100644
--- a/sw/source/core/access/accpara.cxx
+++ b/sw/source/core/access/accpara.cxx
@@ -1488,17 +1488,16 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
{
const SfxItemPropertyMap& rPropMap =
aSwMapProvider.GetPropertySet( PROPERTY_MAP_TEXT_CURSOR )->getPropertyMap();
- PropertyEntryVector_t aPropertyEntries = rPropMap.getPropertyEntries();
- for ( const auto& rProp : aPropertyEntries )
+ for ( const auto& rPair : rPropMap.getPropertyEntries() )
{
- const SfxPoolItem* pItem = pSet->GetItem( rProp.nWID );
+ const SfxPoolItem* pItem = pSet->GetItem( rPair.second.nWID );
if ( pItem )
{
uno::Any aVal;
- pItem->QueryValue( aVal, rProp.nMemberId );
+ pItem->QueryValue( aVal, rPair.second.nMemberId );
PropertyValue rPropVal;
- rPropVal.Name = rProp.sName;
+ rPropVal.Name = rPair.first;
rPropVal.Value = aVal;
rPropVal.Handle = -1;
rPropVal.State = beans::PropertyState_DEFAULT_VALUE;
@@ -1681,19 +1680,18 @@ void SwAccessibleParagraph::_getRunAttributesImpl(
const SfxItemPropertyMap& rPropMap =
aSwMapProvider.GetPropertySet( PROPERTY_MAP_TEXT_CURSOR )->getPropertyMap();
- PropertyEntryVector_t aPropertyEntries = rPropMap.getPropertyEntries();
- for ( const auto& rProp : aPropertyEntries )
+ for ( const auto& rPair : rPropMap.getPropertyEntries() )
{
const SfxPoolItem* pItem( nullptr );
// #i82637# - Found character attributes, whose value equals the value of
// the corresponding default character attributes, are excluded.
- if ( aSet.GetItemState( rProp.nWID, true, &pItem ) == SfxItemState::SET )
+ if ( aSet.GetItemState( rPair.second.nWID, true, &pItem ) == SfxItemState::SET )
{
uno::Any aVal;
- pItem->QueryValue( aVal, rProp.nMemberId );
+ pItem->QueryValue( aVal, rPair.second.nMemberId );
PropertyValue rPropVal;
- rPropVal.Name = rProp.sName;
+ rPropVal.Name = rPair.first;
rPropVal.Value = aVal;
rPropVal.Handle = -1;
rPropVal.State = PropertyState_DIRECT_VALUE;
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx
index 1abb9f207cf2..fdcdb0f76c1e 100644
--- a/sw/source/core/unocore/unocrsrhelper.cxx
+++ b/sw/source/core/unocore/unocrsrhelper.cxx
@@ -317,13 +317,13 @@ static uno::Any GetParaListAutoFormat(SwTextNode const& rNode)
SfxItemPropertyMap const& rMap(rPropSet.getPropertyMap());
std::vector<beans::NamedValue> props;
// have to iterate the map, not the item set?
- for (auto const& rEntry : rMap.getPropertyEntries())
+ for (auto const& rPair : rMap.getPropertyEntries())
{
- if (rPropSet.getPropertyState(rEntry, rSet) == PropertyState_DIRECT_VALUE)
+ if (rPropSet.getPropertyState(rPair.second, rSet) == PropertyState_DIRECT_VALUE)
{
Any value;
- rPropSet.getPropertyValue(rEntry, rSet, value);
- props.emplace_back(rEntry.sName, value);
+ rPropSet.getPropertyValue(rPair.second, rSet, value);
+ props.emplace_back(OUString(rPair.first), value);
}
}
return uno::makeAny(comphelper::containerToSequence(props));
diff --git a/sw/source/core/unocore/unosrch.cxx b/sw/source/core/unocore/unosrch.cxx
index cb826a2b439b..0c4e6a50aee7 100644
--- a/sw/source/core/unocore/unosrch.cxx
+++ b/sw/source/core/unocore/unosrch.cxx
@@ -40,8 +40,8 @@ using namespace ::com::sun::star;
class SwSearchProperties_Impl
{
- std::unique_ptr<std::unique_ptr<beans::PropertyValue>[]> pValueArr;
- const PropertyEntryVector_t aPropertyEntries;
+ std::unordered_map<OUString, beans::PropertyValue> maValues;
+ SfxItemPropertyMap mrMap;
SwSearchProperties_Impl(const SwSearchProperties_Impl&) = delete;
SwSearchProperties_Impl& operator=(const SwSearchProperties_Impl&) = delete;
@@ -60,48 +60,32 @@ public:
};
SwSearchProperties_Impl::SwSearchProperties_Impl() :
- aPropertyEntries( aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_CURSOR)->getPropertyMap().getPropertyEntries() )
+ mrMap( aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_CURSOR)->getPropertyMap() )
{
- size_t nArrLen = aPropertyEntries.size();
- pValueArr.reset( new std::unique_ptr<beans::PropertyValue>[nArrLen] );
}
void SwSearchProperties_Impl::SetProperties(const uno::Sequence< beans::PropertyValue >& aSearchAttribs)
{
//delete all existing values
- for(size_t i = 0; i < aPropertyEntries.size(); ++i)
- {
- pValueArr[i].reset();
- }
+ maValues.clear();
for(const beans::PropertyValue& rSearchAttrib : aSearchAttribs)
{
const OUString& sName = rSearchAttrib.Name;
- auto aIt = std::find_if(aPropertyEntries.begin(), aPropertyEntries.end(),
- [&sName](const SfxItemPropertyNamedEntry& rProp) { return rProp.sName == sName; });
- if( aIt == aPropertyEntries.end() )
+ if( !mrMap.hasPropertyByName(sName) )
throw beans::UnknownPropertyException(sName);
- auto nIndex = static_cast<sal_uInt32>(std::distance(aPropertyEntries.begin(), aIt));
- pValueArr[nIndex].reset( new beans::PropertyValue(rSearchAttrib) );
+ maValues[sName] = rSearchAttrib;
}
}
uno::Sequence< beans::PropertyValue > SwSearchProperties_Impl::GetProperties() const
{
- sal_uInt32 nPropCount = 0;
- for( size_t i = 0; i < aPropertyEntries.size(); i++)
- if(pValueArr[i])
- nPropCount++;
-
- uno::Sequence< beans::PropertyValue > aRet(nPropCount);
+ uno::Sequence< beans::PropertyValue > aRet(maValues.size());
beans::PropertyValue* pProps = aRet.getArray();
- nPropCount = 0;
- for(size_t i = 0; i < aPropertyEntries.size(); i++)
+ sal_Int32 nPropCount = 0;
+ for(auto const & rPair : maValues)
{
- if(pValueArr[i])
- {
- pProps[nPropCount++] = *(pValueArr[i]);
- }
+ pProps[nPropCount++] = rPair.second;
}
return aRet;
}
@@ -157,270 +141,177 @@ void SwSearchProperties_Impl::FillItemSet(SfxItemSet& rSet, bool bIsValueSearch)
pCTLWeightItem,
pShadowItem ;
- PropertyEntryVector_t::const_iterator aIt = aPropertyEntries.begin();
- for(size_t i = 0; i < aPropertyEntries.size(); i++, ++aIt)
+ auto funcClone = [&rSet](sal_uInt16 nWID, std::unique_ptr<SfxPoolItem> & rpPoolItem)
+ {
+ if(!rpPoolItem)
+ rpPoolItem.reset(rSet.GetPool()->GetDefaultItem(nWID).Clone());
+ return rpPoolItem.get();
+ };
+ for(auto const & rPair : maValues)
{
- if(pValueArr[i])
+ SfxPoolItem* pTempItem = nullptr;
+ const SfxItemPropertySimpleEntry & rPropEntry = mrMap.getPropertyEntries().find(std::u16string_view(rPair.first))->second;
+ sal_uInt16 nWID = rPropEntry.nWID;
+ switch(nWID)
{
- SfxPoolItem* pTempItem = nullptr;
- switch(aIt->nWID)
- {
- case RES_BOX:
- if(!pBoxItem)
- pBoxItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pBoxItem.get();
- break;
- case RES_CHRATR_BOX:
- if(!pCharBoxItem)
- pCharBoxItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCharBoxItem.get();
- break;
- case RES_BREAK:
- if(!pBreakItem)
- pBreakItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pBreakItem.get();
- break;
- case RES_CHRATR_AUTOKERN:
- if(!pAutoKernItem)
- pAutoKernItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pAutoKernItem.get();
- break;
- case RES_CHRATR_BACKGROUND:
- if(!pBrushItem)
- pBrushItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pBrushItem.get();
- break;
- case RES_CHRATR_CASEMAP:
- if(!pCasemapItem)
- pCasemapItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCasemapItem.get();
- break;
- case RES_CHRATR_COLOR:
- if(!pCharColorItem)
- pCharColorItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCharColorItem.get();
- break;
- case RES_CHRATR_CONTOUR:
- if(!pContourItem)
- pContourItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pContourItem.get();
- break;
- case RES_CHRATR_CROSSEDOUT:
- if(!pCrossedOutItem)
- pCrossedOutItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCrossedOutItem.get();
- break;
- case RES_CHRATR_ESCAPEMENT:
- if(!pEscItem)
- pEscItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pEscItem.get();
- break;
- case RES_CHRATR_BLINK:
- if(!pBlinkItem)
- pBlinkItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pBlinkItem.get();
- break;
- case RES_CHRATR_FONT:
- if(!pFontItem)
- pFontItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pFontItem.get();
- break;
- case RES_CHRATR_FONTSIZE:
- if(!pFontSizeItem)
- pFontSizeItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pFontSizeItem.get();
- break;
- case RES_CHRATR_KERNING:
- if(!pKernItem)
- pKernItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pKernItem.get();
- break;
- case RES_CHRATR_LANGUAGE:
- if(!pLangItem)
- pLangItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pLangItem.get();
- break;
- case RES_CHRATR_NOHYPHEN:
- if(!pNHyphItem)
- pNHyphItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pNHyphItem.get();
- break;
- case RES_CHRATR_POSTURE:
- if(!pPostItem)
- pPostItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pPostItem.get();
- break;
- case RES_CHRATR_SHADOWED:
- if(!pShadItem)
- pShadItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pShadItem.get();
- break;
- case RES_TXTATR_CHARFMT:
- if(!pCharFormatItem)
- pCharFormatItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCharFormatItem.get();
- break;
- case RES_CHRATR_UNDERLINE:
- if(!pULineItem)
- pULineItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pULineItem.get();
- break;
- case RES_CHRATR_OVERLINE:
- if(!pOLineItem)
- pOLineItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pOLineItem.get();
- break;
- case RES_CHRATR_WEIGHT:
- if(!pWeightItem)
- pWeightItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pWeightItem.get();
- break;
- case RES_PARATR_DROP:
- if(!pDropItem)
- pDropItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pDropItem.get();
- break;
- case RES_TXTATR_INETFMT:
- if(!pInetItem)
- pInetItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pInetItem.get();
- break;
- case RES_PAGEDESC:
- if(!pDescItem)
- pDescItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pDescItem.get();
- break;
- case RES_PARATR_ADJUST:
- if(!pAdjItem)
- pAdjItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pAdjItem.get();
- break;
- case RES_BACKGROUND:
- if(!pBackItem)
- pBackItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pBackItem.get();
- break;
- case RES_UL_SPACE:
- if(!pULItem)
- pULItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pULItem.get();
- break;
- case RES_LR_SPACE:
- if(!pLRItem)
- pLRItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pLRItem.get();
- break;
- case RES_KEEP:
- if(!pKeepItem)
- pKeepItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pKeepItem.get();
- break;
- case RES_LINENUMBER:
- if(!pLineNumItem)
- pLineNumItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pLineNumItem.get();
- break;
- case RES_PARATR_LINESPACING:
- if(!pLineSpaceItem)
- pLineSpaceItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pLineSpaceItem.get();
- break;
- case RES_PARATR_REGISTER:
- if(!pRegItem)
- pRegItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pRegItem.get();
- break;
- case RES_PARATR_SPLIT:
- if(!pSplitItem)
- pSplitItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pSplitItem.get();
- break;
- case RES_PARATR_TABSTOP:
- if(!pTabItem)
- pTabItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pTabItem.get();
- break;
- case RES_CHRATR_WORDLINEMODE:
- if(!pWLineItem)
- pWLineItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pWLineItem.get();
- break;
- case RES_CHRATR_CJK_FONT:
- if(!pFontCJKItem )
- pFontCJKItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pFontCJKItem.get();
- break;
- case RES_CHRATR_CJK_FONTSIZE:
- if(!pFontSizeCJKItem )
- pFontSizeCJKItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pFontSizeCJKItem.get();
- break;
- case RES_CHRATR_CJK_LANGUAGE:
- if(!pCJKLangItem )
- pCJKLangItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCJKLangItem.get();
- break;
- case RES_CHRATR_CJK_POSTURE:
- if(!pCJKPostureItem )
- pCJKPostureItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCJKPostureItem.get();
- break;
- case RES_CHRATR_CJK_WEIGHT:
- if(!pCJKWeightItem )
- pCJKWeightItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCJKWeightItem.get();
- break;
- case RES_CHRATR_CTL_FONT:
- if(!pFontCTLItem )
- pFontCTLItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pFontCTLItem.get();
- break;
- case RES_CHRATR_CTL_FONTSIZE:
- if(!pFontSizeCTLItem )
- pFontSizeCTLItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pFontSizeCTLItem.get();
- break;
- case RES_CHRATR_CTL_LANGUAGE:
- if(!pCTLLangItem )
- pCTLLangItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCTLLangItem.get();
- break;
- case RES_CHRATR_CTL_POSTURE:
- if(!pCTLPostureItem )
- pCTLPostureItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCTLPostureItem.get();
- break;
- case RES_CHRATR_CTL_WEIGHT:
- if(!pCTLWeightItem )
- pCTLWeightItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pCTLWeightItem.get();
- break;
- case RES_CHRATR_SHADOW:
- if(!pShadowItem )
- pShadowItem.reset(rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone());
- pTempItem = pShadowItem.get();
- break;
- }
- if(pTempItem)
+ case RES_BOX:
+ pTempItem = funcClone(nWID, pBoxItem);
+ break;
+ case RES_CHRATR_BOX:
+ pTempItem = funcClone(nWID, pCharBoxItem);
+ break;
+ case RES_BREAK:
+ pTempItem = funcClone(nWID, pBreakItem);
+ break;
+ case RES_CHRATR_AUTOKERN:
+ pTempItem = funcClone(nWID, pAutoKernItem);
+ break;
+ case RES_CHRATR_BACKGROUND:
+ pTempItem = funcClone(nWID, pBrushItem);
+ break;
+ case RES_CHRATR_CASEMAP:
+ pTempItem = funcClone(nWID, pCasemapItem);
+ break;
+ case RES_CHRATR_COLOR:
+ pTempItem = funcClone(nWID, pCharColorItem);
+ break;
+ case RES_CHRATR_CONTOUR:
+ pTempItem = funcClone(nWID, pContourItem);
+ break;
+ case RES_CHRATR_CROSSEDOUT:
+ pTempItem = funcClone(nWID, pCrossedOutItem);
+ break;
+ case RES_CHRATR_ESCAPEMENT:
+ pTempItem = funcClone(nWID, pEscItem);
+ break;
+ case RES_CHRATR_BLINK:
+ pTempItem = funcClone(nWID, pBlinkItem);
+ break;
+ case RES_CHRATR_FONT:
+ pTempItem = funcClone(nWID, pFontItem);
+ break;
+ case RES_CHRATR_FONTSIZE:
+ pTempItem = funcClone(nWID, pFontSizeItem);
+ break;
+ case RES_CHRATR_KERNING:
+ pTempItem = funcClone(nWID, pKernItem);
+ break;
+ case RES_CHRATR_LANGUAGE:
+ pTempItem = funcClone(nWID, pLangItem);
+ break;
+ case RES_CHRATR_NOHYPHEN:
+ pTempItem = funcClone(nWID, pNHyphItem);
+ break;
+ case RES_CHRATR_POSTURE:
+ pTempItem = funcClone(nWID, pPostItem);
+ break;
+ case RES_CHRATR_SHADOWED:
+ pTempItem = funcClone(nWID, pShadItem);
+ break;
+ case RES_TXTATR_CHARFMT:
+ pTempItem = funcClone(nWID, pCharFormatItem);
+ break;
+ case RES_CHRATR_UNDERLINE:
+ pTempItem = funcClone(nWID, pULineItem);
+ break;
+ case RES_CHRATR_OVERLINE:
+ pTempItem = funcClone(nWID, pOLineItem);
+ break;
+ case RES_CHRATR_WEIGHT:
+ pTempItem = funcClone(nWID, pWeightItem);
+ break;
+ case RES_PARATR_DROP:
+ pTempItem = funcClone(nWID, pDropItem);
+ break;
+ case RES_TXTATR_INETFMT:
+ pTempItem = funcClone(nWID, pInetItem);
+ break;
+ case RES_PAGEDESC:
+ pTempItem = funcClone(nWID, pDescItem);
+ break;
+ case RES_PARATR_ADJUST:
+ pTempItem = funcClone(nWID, pAdjItem);
+ break;
+ case RES_BACKGROUND:
+ pTempItem = funcClone(nWID, pBackItem);
+ break;
+ case RES_UL_SPACE:
+ pTempItem = funcClone(nWID, pULItem);
+ break;
+ case RES_LR_SPACE:
+ pTempItem = funcClone(nWID, pLRItem);
+ break;
+ case RES_KEEP:
+ pTempItem = funcClone(nWID, pKeepItem);
+ break;
+ case RES_LINENUMBER:
+ pTempItem = funcClone(nWID, pLineNumItem);
+ break;
+ case RES_PARATR_LINESPACING:
+ pTempItem = funcClone(nWID, pLineSpaceItem);
+ break;
+ case RES_PARATR_REGISTER:
+ pTempItem = funcClone(nWID, pRegItem);
+ break;
+ case RES_PARATR_SPLIT:
+ pTempItem = funcClone(nWID, pSplitItem);
+ break;
+ case RES_PARATR_TABSTOP:
+ pTempItem = funcClone(nWID, pTabItem);
+ break;
+ case RES_CHRATR_WORDLINEMODE:
+ pTempItem = funcClone(nWID, pWLineItem);
+ break;
+ case RES_CHRATR_CJK_FONT:
+ pTempItem = funcClone(nWID, pFontCJKItem);
+ break;
+ case RES_CHRATR_CJK_FONTSIZE:
+ pTempItem = funcClone(nWID, pFontSizeCJKItem);
+ break;
+ case RES_CHRATR_CJK_LANGUAGE:
+ pTempItem = funcClone(nWID, pCJKLangItem);
+ break;
+ case RES_CHRATR_CJK_POSTURE:
+ pTempItem = funcClone(nWID, pCJKPostureItem);
+ break;
+ case RES_CHRATR_CJK_WEIGHT:
+ pTempItem = funcClone(nWID, pCJKWeightItem);
+ break;
+ case RES_CHRATR_CTL_FONT:
+ pTempItem = funcClone(nWID, pFontCTLItem);
+ break;
+ case RES_CHRATR_CTL_FONTSIZE:
+ pTempItem = funcClone(nWID, pFontSizeCTLItem);
+ break;
+ case RES_CHRATR_CTL_LANGUAGE:
+ pTempItem = funcClone(nWID, pCTLLangItem);
+ break;
+ case RES_CHRATR_CTL_POSTURE:
+ pTempItem = funcClone(nWID, pCTLPostureItem);
+ break;
+ case RES_CHRATR_CTL_WEIGHT:
+ pTempItem = funcClone(nWID, pCTLWeightItem);
+ break;
+ case RES_CHRATR_SHADOW:
+ pTempItem = funcClone(nWID, pShadowItem);
+ break;
+ }
+ if(pTempItem)
+ {
+ if(bIsValueSearch)
{
- if(bIsValueSearch)
- {
- pTempItem->PutValue(pValueArr[i]->Value, aIt->nMemberId);
- rSet.Put(*pTempItem);
- }
- else
- rSet.InvalidateItem( pTempItem->Which() );
+ pTempItem->PutValue(rPair.second.Value, rPropEntry.nMemberId);
+ rSet.Put(*pTempItem);
}
+ else
+ rSet.InvalidateItem( pTempItem->Which() );
}
}
}
bool SwSearchProperties_Impl::HasAttributes() const
{
- for(size_t i = 0; i < aPropertyEntries.size(); i++)
- if(pValueArr[i])
- return true;
- return false;
+ return !maValues.empty();
}
SwXTextSearch::SwXTextSearch() :
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 9c0e9d5ff968..3c70dc9eaa93 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -1138,17 +1138,16 @@ namespace {
class SwStyleProperties_Impl
{
- const PropertyEntryVector_t aPropertyEntries;
+ const SfxItemPropertyMap& mrMap;
std::map<OUString, uno::Any> m_vPropertyValues;
public:
explicit SwStyleProperties_Impl(const SfxItemPropertyMap& rMap)
- : aPropertyEntries(rMap.getPropertyEntries())
+ : mrMap(rMap)
{ }
- bool AllowsKey(const OUString& rName)
+ bool AllowsKey(std::u16string_view rName)
{
- return std::any_of(aPropertyEntries.begin(), aPropertyEntries.end(),
- [rName] (const SfxItemPropertyNamedEntry& rEntry) {return rName == rEntry.sName;} );
+ return mrMap.hasPropertyByName(rName);
}
bool SetProperty(const OUString& rName, const uno::Any& rValue)
{
@@ -4269,7 +4268,6 @@ uno::Sequence< beans::PropertyValue > SwXAutoStyle::getProperties()
const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
const SfxItemPropertyMap &rMap = pPropSet->getPropertyMap();
- PropertyEntryVector_t aPropVector = rMap.getPropertyEntries();
SfxItemSet& rSet = *mpSet;
SfxItemIter aIter(rSet);
@@ -4280,13 +4278,13 @@ uno::Sequence< beans::PropertyValue > SwXAutoStyle::getProperties()
// TODO: Optimize - and fix! the old iteration filled each WhichId
// only once but there are more properties than WhichIds
- for( const auto& rProp : aPropVector )
+ for( const auto& rPair : rMap.getPropertyEntries() )
{
- if ( rProp.nWID == nWID )
+ if ( rPair.second.nWID == nWID )
{
beans::PropertyValue aPropertyValue;
- aPropertyValue.Name = rProp.sName;
- pItem->QueryValue( aPropertyValue.Value, rProp.nMemberId );
+ aPropertyValue.Name = rPair.first;
+ pItem->QueryValue( aPropertyValue.Value, rPair.second.nMemberId );
aPropertyVector.push_back( aPropertyValue );
}
}