reduce cost of creating large charts (tdf#144052)
creating a temporary SfxItemSet for each geometry object adds up fast,
so only create the temporary for those SdrTextObj subclasses that need
it.
Change-Id: I0c03a630057718f09c12a4a2d07ad23fca46fd2d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121800
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/include/svx/sdr/properties/defaultproperties.hxx b/include/svx/sdr/properties/defaultproperties.hxx
index e901278..b7e5d70 100644
--- a/include/svx/sdr/properties/defaultproperties.hxx
+++ b/include/svx/sdr/properties/defaultproperties.hxx
@@ -52,7 +52,7 @@
virtual void PostItemChange(const sal_uInt16 nWhich) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
// check if SfxItemSet exists
bool HasSfxItemSet() const { return bool(mxItemSet); }
diff --git a/include/svx/sdr/properties/properties.hxx b/include/svx/sdr/properties/properties.hxx
index 6005229..f27aa5d 100644
--- a/include/svx/sdr/properties/properties.hxx
+++ b/include/svx/sdr/properties/properties.hxx
@@ -104,7 +104,10 @@
virtual void PostItemChange(const sal_uInt16 nWhich) = 0;
// Internally react on ItemSet changes. The given ItemSet contains all changed items, the new ones.
virtual void ItemSetChanged(const SfxItemSet& rSet) = 0;
virtual void ItemSetChanged(const SfxItemSet*) = 0;
// Subclasses need to return true if they want the ItemSetChanged() callback to actually have a non-zero pointer.
// We do this because creating the temporary item set is expensive and seldom used.
virtual bool WantItemSetInItemSetChanged() const { return false; }
public:
// basic constructor, used from SdrObject.
diff --git a/svx/inc/sdr/properties/attributeproperties.hxx b/svx/inc/sdr/properties/attributeproperties.hxx
index 9633257..1aa4572 100644
--- a/svx/inc/sdr/properties/attributeproperties.hxx
+++ b/svx/inc/sdr/properties/attributeproperties.hxx
@@ -49,7 +49,7 @@
virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/captionproperties.hxx b/svx/inc/sdr/properties/captionproperties.hxx
index c6f7152..54057fa 100644
--- a/svx/inc/sdr/properties/captionproperties.hxx
+++ b/svx/inc/sdr/properties/captionproperties.hxx
@@ -31,7 +31,7 @@
virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/circleproperties.hxx b/svx/inc/sdr/properties/circleproperties.hxx
index 2227817..273df7a 100644
--- a/svx/inc/sdr/properties/circleproperties.hxx
+++ b/svx/inc/sdr/properties/circleproperties.hxx
@@ -31,7 +31,7 @@
virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/connectorproperties.hxx b/svx/inc/sdr/properties/connectorproperties.hxx
index 8d6e14f..cb69b64 100644
--- a/svx/inc/sdr/properties/connectorproperties.hxx
+++ b/svx/inc/sdr/properties/connectorproperties.hxx
@@ -31,7 +31,7 @@
virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/customshapeproperties.hxx b/svx/inc/sdr/properties/customshapeproperties.hxx
index 8fa29e1..f0af2d5 100644
--- a/svx/inc/sdr/properties/customshapeproperties.hxx
+++ b/svx/inc/sdr/properties/customshapeproperties.hxx
@@ -37,7 +37,7 @@
virtual bool AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) const override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
// react on Item change
virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
diff --git a/svx/inc/sdr/properties/e3dproperties.hxx b/svx/inc/sdr/properties/e3dproperties.hxx
index cce69e8..5337516 100644
--- a/svx/inc/sdr/properties/e3dproperties.hxx
+++ b/svx/inc/sdr/properties/e3dproperties.hxx
@@ -32,7 +32,7 @@
virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/emptyproperties.hxx b/svx/inc/sdr/properties/emptyproperties.hxx
index 250c23d..af3b393 100644
--- a/svx/inc/sdr/properties/emptyproperties.hxx
+++ b/svx/inc/sdr/properties/emptyproperties.hxx
@@ -49,7 +49,7 @@
virtual void PostItemChange(const sal_uInt16 nWhich) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/graphicproperties.hxx b/svx/inc/sdr/properties/graphicproperties.hxx
index 3a424f7..d8419a5 100644
--- a/svx/inc/sdr/properties/graphicproperties.hxx
+++ b/svx/inc/sdr/properties/graphicproperties.hxx
@@ -34,7 +34,7 @@
virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/groupproperties.hxx b/svx/inc/sdr/properties/groupproperties.hxx
index 32fe503..1496a24 100644
--- a/svx/inc/sdr/properties/groupproperties.hxx
+++ b/svx/inc/sdr/properties/groupproperties.hxx
@@ -40,7 +40,7 @@
virtual void PostItemChange(const sal_uInt16 nWhich) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/measureproperties.hxx b/svx/inc/sdr/properties/measureproperties.hxx
index 77cb253..0bc4f1d 100644
--- a/svx/inc/sdr/properties/measureproperties.hxx
+++ b/svx/inc/sdr/properties/measureproperties.hxx
@@ -31,7 +31,7 @@
virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/rectangleproperties.hxx b/svx/inc/sdr/properties/rectangleproperties.hxx
index 1af85d7..823c2a0 100644
--- a/svx/inc/sdr/properties/rectangleproperties.hxx
+++ b/svx/inc/sdr/properties/rectangleproperties.hxx
@@ -29,7 +29,7 @@
{
protected:
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
public:
// basic constructor
diff --git a/svx/inc/sdr/properties/textproperties.hxx b/svx/inc/sdr/properties/textproperties.hxx
index ea587a8..4a6d59f 100644
--- a/svx/inc/sdr/properties/textproperties.hxx
+++ b/svx/inc/sdr/properties/textproperties.hxx
@@ -40,7 +40,8 @@
virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
virtual void ItemSetChanged(const SfxItemSet*) override;
virtual bool WantItemSetInItemSetChanged() const override final { return true; }
/// Get the TextProvider related to our SdrObject
virtual const svx::ITextProvider& getTextProvider() const;
diff --git a/svx/source/sdr/properties/attributeproperties.cxx b/svx/source/sdr/properties/attributeproperties.cxx
index f24a4b0..b462493 100644
--- a/svx/source/sdr/properties/attributeproperties.cxx
+++ b/svx/source/sdr/properties/attributeproperties.cxx
@@ -276,7 +276,7 @@
return *mxItemSet;
}
void AttributeProperties::ItemSetChanged(const SfxItemSet& /*rSet*/)
void AttributeProperties::ItemSetChanged(const SfxItemSet* /*pSet*/)
{
// own modifications
SdrObject& rObj = GetSdrObject();
diff --git a/svx/source/sdr/properties/captionproperties.cxx b/svx/source/sdr/properties/captionproperties.cxx
index 8a579a0..ab9b352 100644
--- a/svx/source/sdr/properties/captionproperties.cxx
+++ b/svx/source/sdr/properties/captionproperties.cxx
@@ -62,7 +62,7 @@
return std::unique_ptr<BaseProperties>(new CaptionProperties(*this, rObj));
}
void CaptionProperties::ItemSetChanged(const SfxItemSet& rSet)
void CaptionProperties::ItemSetChanged(const SfxItemSet* pSet)
{
SdrCaptionObj& rObj = static_cast<SdrCaptionObj&>(GetSdrObject());
@@ -70,7 +70,7 @@
rObj.ImpRecalcTail();
// call parent
RectangleProperties::ItemSetChanged(rSet);
RectangleProperties::ItemSetChanged(pSet);
}
void CaptionProperties::SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr)
diff --git a/svx/source/sdr/properties/circleproperties.cxx b/svx/source/sdr/properties/circleproperties.cxx
index 058a45e..2d631d0 100644
--- a/svx/source/sdr/properties/circleproperties.cxx
+++ b/svx/source/sdr/properties/circleproperties.cxx
@@ -66,12 +66,12 @@
return std::unique_ptr<BaseProperties>(new CircleProperties(*this, rObj));
}
void CircleProperties::ItemSetChanged(const SfxItemSet& rSet)
void CircleProperties::ItemSetChanged(const SfxItemSet* pSet)
{
SdrCircObj& rObj = static_cast<SdrCircObj&>(GetSdrObject());
// call parent
RectangleProperties::ItemSetChanged(rSet);
RectangleProperties::ItemSetChanged(pSet);
// local changes
rObj.ImpSetAttrToCircInfo();
diff --git a/svx/source/sdr/properties/connectorproperties.cxx b/svx/source/sdr/properties/connectorproperties.cxx
index 7da10e2..c8ef783 100644
--- a/svx/source/sdr/properties/connectorproperties.cxx
+++ b/svx/source/sdr/properties/connectorproperties.cxx
@@ -63,12 +63,12 @@
return std::unique_ptr<BaseProperties>(new ConnectorProperties(*this, rObj));
}
void ConnectorProperties::ItemSetChanged(const SfxItemSet& rSet)
void ConnectorProperties::ItemSetChanged(const SfxItemSet* pSet)
{
SdrEdgeObj& rObj = static_cast<SdrEdgeObj&>(GetSdrObject());
// call parent
TextProperties::ItemSetChanged(rSet);
TextProperties::ItemSetChanged(pSet);
// local changes
rObj.ImpSetAttrToEdgeInfo();
diff --git a/svx/source/sdr/properties/customshapeproperties.cxx b/svx/source/sdr/properties/customshapeproperties.cxx
index 8b6466c..96db5de 100644
--- a/svx/source/sdr/properties/customshapeproperties.cxx
+++ b/svx/source/sdr/properties/customshapeproperties.cxx
@@ -102,7 +102,7 @@
nWhich2 = aIter.NextWhich();
}
SfxItemSet aSet(GetSdrObject().GetObjectItemPool());
ItemSetChanged(aSet);
ItemSetChanged(&aSet);
}
else
TextProperties::ClearObjectItem( nWhich );
@@ -124,10 +124,10 @@
TextProperties::ClearObjectItemDirect( nWhich );
}
void CustomShapeProperties::ItemSetChanged(const SfxItemSet& rSet)
void CustomShapeProperties::ItemSetChanged(const SfxItemSet* pSet)
{
// call parent
TextProperties::ItemSetChanged(rSet);
TextProperties::ItemSetChanged(pSet);
// update bTextFrame and RenderGeometry
UpdateTextFrameStatus(true);
diff --git a/svx/source/sdr/properties/defaultproperties.cxx b/svx/source/sdr/properties/defaultproperties.cxx
index 186beba..cd6a00a 100644
--- a/svx/source/sdr/properties/defaultproperties.cxx
+++ b/svx/source/sdr/properties/defaultproperties.cxx
@@ -115,9 +115,14 @@
ItemChange(nWhichID, &rItem);
PostItemChange(nWhichID);
SfxItemSet aSet(GetSdrObject().GetObjectItemPool(), nWhichID, nWhichID);
aSet.Put(rItem);
ItemSetChanged(aSet);
if (WantItemSetInItemSetChanged())
{
SfxItemSet aSet(GetSdrObject().GetObjectItemPool(), nWhichID, nWhichID);
aSet.Put(rItem);
ItemSetChanged(&aSet);
}
else
ItemSetChanged(nullptr);
}
}
@@ -140,8 +145,13 @@
if(nWhich)
{
SfxItemSet aSet(GetSdrObject().GetObjectItemPool(), nWhich, nWhich);
ItemSetChanged(aSet);
if (WantItemSetInItemSetChanged())
{
SfxItemSet aSet(GetSdrObject().GetObjectItemPool(), nWhich, nWhich);
ItemSetChanged(&aSet);
}
else
ItemSetChanged(nullptr);
}
}
}
@@ -176,7 +186,9 @@
const SfxPoolItem *pPoolItem;
std::vector< sal_uInt16 > aPostItemChangeList;
bool bDidChange(false);
SfxItemSet aSet(GetSdrObject().GetObjectItemPool(), svl::Items<SDRATTR_START, EE_ITEMS_END>);
std::optional<SfxItemSet> aSet;
if (WantItemSetInItemSetChanged())
aSet.emplace(GetSdrObject().GetObjectItemPool(), svl::Items<SDRATTR_START, EE_ITEMS_END>);
// give a hint to STL_Vector
aPostItemChangeList.reserve(rSet.Count());
@@ -190,7 +202,8 @@
bDidChange = true;
ItemChange(nWhich, pPoolItem);
aPostItemChangeList.push_back( nWhich );
aSet.Put(*pPoolItem);
if (aSet)
aSet->Put(*pPoolItem);
}
}
@@ -204,11 +217,14 @@
PostItemChange(rItem);
}
ItemSetChanged(aSet);
if (aSet)
ItemSetChanged(&*aSet);
else
ItemSetChanged(nullptr);
}
}
void DefaultProperties::ItemSetChanged(const SfxItemSet& /*rSet*/)
void DefaultProperties::ItemSetChanged(const SfxItemSet* /*pSet*/)
{
}
diff --git a/svx/source/sdr/properties/e3dproperties.cxx b/svx/source/sdr/properties/e3dproperties.cxx
index 9d291dd..bb99c2d 100644
--- a/svx/source/sdr/properties/e3dproperties.cxx
+++ b/svx/source/sdr/properties/e3dproperties.cxx
@@ -60,12 +60,12 @@
return std::unique_ptr<BaseProperties>(new E3dProperties(*this, rObj));
}
void E3dProperties::ItemSetChanged(const SfxItemSet& rSet)
void E3dProperties::ItemSetChanged(const SfxItemSet* pSet)
{
E3dObject& rObj = static_cast<E3dObject&>(GetSdrObject());
// call parent
AttributeProperties::ItemSetChanged(rSet);
AttributeProperties::ItemSetChanged(pSet);
// local changes
rObj.StructureChanged();
diff --git a/svx/source/sdr/properties/emptyproperties.cxx b/svx/source/sdr/properties/emptyproperties.cxx
index 3837b23..ac30ef4 100644
--- a/svx/source/sdr/properties/emptyproperties.cxx
+++ b/svx/source/sdr/properties/emptyproperties.cxx
@@ -82,7 +82,7 @@
assert(!"EmptyProperties::SetObjectItemSet() should never be called");
}
void EmptyProperties::ItemSetChanged(const SfxItemSet& /*rSet*/)
void EmptyProperties::ItemSetChanged(const SfxItemSet* /*pSet*/)
{
assert(!"EmptyProperties::ItemSetChanged() should never be called");
}
diff --git a/svx/source/sdr/properties/graphicproperties.cxx b/svx/source/sdr/properties/graphicproperties.cxx
index dd59a41..b2be8a9 100644
--- a/svx/source/sdr/properties/graphicproperties.cxx
+++ b/svx/source/sdr/properties/graphicproperties.cxx
@@ -93,7 +93,7 @@
return std::unique_ptr<BaseProperties>(new GraphicProperties(*this, rObj));
}
void GraphicProperties::ItemSetChanged(const SfxItemSet& rSet)
void GraphicProperties::ItemSetChanged(const SfxItemSet* pSet)
{
SdrGrafObj& rObj = static_cast<SdrGrafObj&>(GetSdrObject());
@@ -109,7 +109,7 @@
rObj.ImpSetAttrToGrafInfo();
// call parent
RectangleProperties::ItemSetChanged(rSet);
RectangleProperties::ItemSetChanged(pSet);
}
void GraphicProperties::SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr)
diff --git a/svx/source/sdr/properties/groupproperties.cxx b/svx/source/sdr/properties/groupproperties.cxx
index 5f197c4..dd66e88 100644
--- a/svx/source/sdr/properties/groupproperties.cxx
+++ b/svx/source/sdr/properties/groupproperties.cxx
@@ -193,7 +193,7 @@
assert(!"GroupProperties::SetObjectItemSet() should never be called");
}
void GroupProperties::ItemSetChanged(const SfxItemSet& /*rSet*/)
void GroupProperties::ItemSetChanged(const SfxItemSet* /*pSet*/)
{
assert(!"GroupProperties::ItemSetChanged() should never be called");
}
diff --git a/svx/source/sdr/properties/measureproperties.cxx b/svx/source/sdr/properties/measureproperties.cxx
index 08e2009..64e4fe5 100644
--- a/svx/source/sdr/properties/measureproperties.cxx
+++ b/svx/source/sdr/properties/measureproperties.cxx
@@ -72,12 +72,12 @@
return std::unique_ptr<BaseProperties>(new MeasureProperties(*this, rObj));
}
void MeasureProperties::ItemSetChanged(const SfxItemSet& rSet)
void MeasureProperties::ItemSetChanged(const SfxItemSet* pSet)
{
SdrMeasureObj& rObj = static_cast<SdrMeasureObj&>(GetSdrObject());
// call parent
TextProperties::ItemSetChanged(rSet);
TextProperties::ItemSetChanged(pSet);
// local changes
rObj.SetTextDirty();
diff --git a/svx/source/sdr/properties/rectangleproperties.cxx b/svx/source/sdr/properties/rectangleproperties.cxx
index 84b4fc1..894df2a 100644
--- a/svx/source/sdr/properties/rectangleproperties.cxx
+++ b/svx/source/sdr/properties/rectangleproperties.cxx
@@ -42,12 +42,12 @@
return std::unique_ptr<BaseProperties>(new RectangleProperties(*this, rObj));
}
void RectangleProperties::ItemSetChanged(const SfxItemSet& rSet)
void RectangleProperties::ItemSetChanged(const SfxItemSet* pSet)
{
SdrRectObj& rObj = static_cast<SdrRectObj&>(GetSdrObject());
// call parent
TextProperties::ItemSetChanged(rSet);
TextProperties::ItemSetChanged(pSet);
// local changes
rObj.SetXPolyDirty();
diff --git a/svx/source/sdr/properties/textproperties.cxx b/svx/source/sdr/properties/textproperties.cxx
index 2ada7eb..77ed512 100644
--- a/svx/source/sdr/properties/textproperties.cxx
+++ b/svx/source/sdr/properties/textproperties.cxx
@@ -81,7 +81,7 @@
return std::unique_ptr<BaseProperties>(new TextProperties(*this, rObj));
}
void TextProperties::ItemSetChanged(const SfxItemSet& rSet)
void TextProperties::ItemSetChanged(const SfxItemSet* pSet)
{
SdrTextObj& rObj = static_cast<SdrTextObj&>(GetSdrObject());
@@ -121,7 +121,7 @@
for(sal_Int32 nPara = 0; nPara < nParaCount; nPara++)
{
SfxItemSet aSet(pOutliner->GetParaAttribs(nPara));
aSet.Put(rSet);
aSet.Put(*pSet);
pOutliner->SetParaAttribs(nPara, aSet);
}
@@ -145,7 +145,7 @@
}
// Extra-Repaint for radical layout changes (#43139#)
if(SfxItemState::SET == rSet.GetItemState(SDRATTR_TEXT_CONTOURFRAME))
if(SfxItemState::SET == pSet->GetItemState(SDRATTR_TEXT_CONTOURFRAME))
{
// Here only repaint wanted
rObj.ActionChanged();
@@ -153,7 +153,7 @@
}
// call parent
AttributeProperties::ItemSetChanged(rSet);
AttributeProperties::ItemSetChanged(pSet);
}
void TextProperties::ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem)
@@ -394,7 +394,7 @@
// #i61284# push hard ObjectItemSet to OutlinerParaObject attributes
// using existing functionality
GetObjectItemSet(); // force ItemSet
ItemSetChanged(*mxItemSet);
ItemSetChanged(&*mxItemSet);
// now the standard TextProperties stuff
SdrTextObj& rObj = static_cast<SdrTextObj&>(GetSdrObject());
diff --git a/svx/source/table/cell.cxx b/svx/source/table/cell.cxx
index 1b1d74a..427977d 100644
--- a/svx/source/table/cell.cxx
+++ b/svx/source/table/cell.cxx
@@ -166,7 +166,7 @@
void ForceDefaultAttributes() override;
void ItemSetChanged(const SfxItemSet& rSet) override;
void ItemSetChanged(const SfxItemSet*) override;
void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
@@ -222,7 +222,7 @@
{
}
void CellProperties::ItemSetChanged(const SfxItemSet& rSet )
void CellProperties::ItemSetChanged(const SfxItemSet* pSet )
{
SdrTextObj& rObj = static_cast<SdrTextObj&>(GetSdrObject());
@@ -253,12 +253,12 @@
// if the user sets character attributes to the complete
// cell we want to remove all hard set character attributes
// with same which ids from the text
std::vector<sal_uInt16> aCharWhichIds(GetAllCharPropIds(rSet));
std::vector<sal_uInt16> aCharWhichIds(GetAllCharPropIds(*pSet));
for(sal_Int32 nPara = 0; nPara < nParaCount; nPara++)
{
SfxItemSet aSet(pOutliner->GetParaAttribs(nPara));
aSet.Put(rSet);
aSet.Put(*pSet);
for (const auto& rWhichId : aCharWhichIds)
{
@@ -288,7 +288,7 @@
}
// call parent
AttributeProperties::ItemSetChanged(rSet);
AttributeProperties::ItemSetChanged(pSet);
if( mxCell.is() )
mxCell->notifyModified();