WIP: SvxFrameDirectionItem->Item::FrameDirection
Start of op
Now done initial Item, chart2 and cui
Change-Id: I9125ec609e6a93808bc0c2877fa965c2dffa4820
diff --git a/chart2/Library_chartcontroller.mk b/chart2/Library_chartcontroller.mk
index 02c8bcb..142ee73 100644
--- a/chart2/Library_chartcontroller.mk
+++ b/chart2/Library_chartcontroller.mk
@@ -44,6 +44,7 @@
ucbhelper \
utl \
vcl \
+ item \
))
$(eval $(call gb_Library_set_componentfile,chartcontroller,chart2/source/controller/chartcontroller))
diff --git a/chart2/Library_chartcore.mk b/chart2/Library_chartcore.mk
index 4f98fc1..e1a01bd8 100644
--- a/chart2/Library_chartcore.mk
+++ b/chart2/Library_chartcore.mk
@@ -60,6 +60,7 @@
ucbhelper \
utl \
vcl \
+ item \
))
$(eval $(call gb_Library_set_componentfile,chartcore,chart2/source/chartcore))
diff --git a/chart2/source/controller/dialogs/res_DataLabel.cxx b/chart2/source/controller/dialogs/res_DataLabel.cxx
index 2889bdb..45caab6 100644
--- a/chart2/source/controller/dialogs/res_DataLabel.cxx
+++ b/chart2/source/controller/dialogs/res_DataLabel.cxx
@@ -291,7 +291,11 @@
}
if (m_xLB_TextDirection->get_active() != -1)
- rOutAttrs->Put( SvxFrameDirectionItem( m_xLB_TextDirection->get_active_id(), EE_PARA_WRITINGDIR ) );
+ {
+ // I2TM
+ rOutAttrs->itemSet().setItem(Item::FrameDirection(m_xLB_TextDirection->get_active_id()));
+ // rOutAttrs->Put( SvxFrameDirectionItem( m_xLB_TextDirection->get_active_id(), EE_PARA_WRITINGDIR ) );
+ }
if( m_aDC_Dial.IsVisible() )
{
@@ -339,8 +343,13 @@
else
m_xLB_LabelPlacement->set_active(-1);
- if( rInAttrs.GetItemState(EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET )
- m_xLB_TextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() );
+ // I2TM
+ if(const auto Item(rInAttrs.itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet())
+ {
+ m_xLB_TextDirection->set_active_id(Item.getItem().getValue());
+ }
+ // if( rInAttrs.GetItemState(EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET )
+ // m_xLB_TextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() );
if( rInAttrs.GetItemState( SCHATTR_TEXT_DEGREES, true, &pPoolItem ) == SfxItemState::SET )
{
diff --git a/chart2/source/controller/dialogs/tp_AxisLabel.cxx b/chart2/source/controller/dialogs/tp_AxisLabel.cxx
index 3606252..ba999de 100644
--- a/chart2/source/controller/dialogs/tp_AxisLabel.cxx
+++ b/chart2/source/controller/dialogs/tp_AxisLabel.cxx
@@ -129,7 +129,11 @@
rOutAttrs->Put( SfxBoolItem( SCHATTR_AXIS_SHOWDESCR, m_xCbShowDescription->get_active() ) );
if (m_xLbTextDirection->get_active() != -1)
- rOutAttrs->Put( SvxFrameDirectionItem( m_xLbTextDirection->get_active_id(), EE_PARA_WRITINGDIR ) );
+ {
+ // I2TM
+ rOutAttrs->itemSet().setItem(Item::FrameDirection(m_xLbTextDirection->get_active_id()));
+ // rOutAttrs->Put( SvxFrameDirectionItem( m_xLbTextDirection->get_active_id(), EE_PARA_WRITINGDIR ) );
+ }
return true;
}
@@ -182,8 +186,13 @@
m_xCbStacked->set_state(TRISTATE_INDET);
StackedToggleHdl(*m_xCbStacked);
- if( rInAttrs->GetItemState( EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET )
- m_xLbTextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() );
+ // I2TM
+ if(const auto Item(rInAttrs->itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet())
+ {
+ m_xLbTextDirection->set_active_id(Item.getItem().getValue());
+ }
+ // if( rInAttrs->GetItemState( EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET )
+ // m_xLbTextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() );
// Text overlap ----------
aState = rInAttrs->GetItemState( SCHATTR_AXIS_LABEL_OVERLAP, false, &pPoolItem );
diff --git a/chart2/source/controller/dialogs/tp_LegendPosition.cxx b/chart2/source/controller/dialogs/tp_LegendPosition.cxx
index efd8a29..22b7a6d 100644
--- a/chart2/source/controller/dialogs/tp_LegendPosition.cxx
+++ b/chart2/source/controller/dialogs/tp_LegendPosition.cxx
@@ -55,7 +55,11 @@
m_aLegendPositionResources.writeToItemSet(*rOutAttrs);
if (m_xLbTextDirection->get_active() != -1)
- rOutAttrs->Put(SvxFrameDirectionItem(m_xLbTextDirection->get_active_id(), EE_PARA_WRITINGDIR));
+ {
+ // I2TM
+ rOutAttrs->itemSet().setItem(Item::FrameDirection(m_xLbTextDirection->get_active_id()));
+ // rOutAttrs->Put(SvxFrameDirectionItem(m_xLbTextDirection->get_active_id(), EE_PARA_WRITINGDIR));
+ }
return true;
}
@@ -64,9 +68,14 @@
{
m_aLegendPositionResources.initFromItemSet(*rInAttrs);
- const SfxPoolItem* pPoolItem = nullptr;
- if( rInAttrs->GetItemState( EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET )
- m_xLbTextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() );
+ // I2TM
+ if(const auto Item(rInAttrs->itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet())
+ {
+ m_xLbTextDirection->set_active_id(Item.getItem().getValue());
+ }
+ // const SfxPoolItem* pPoolItem = nullptr;
+ // if( rInAttrs->GetItemState( EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET )
+ // m_xLbTextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() );
}
} //namespace chart
diff --git a/chart2/source/controller/dialogs/tp_TitleRotation.cxx b/chart2/source/controller/dialogs/tp_TitleRotation.cxx
index b9d73f3..1bfd16b4 100644
--- a/chart2/source/controller/dialogs/tp_TitleRotation.cxx
+++ b/chart2/source/controller/dialogs/tp_TitleRotation.cxx
@@ -100,8 +100,10 @@
sal_Int32 nDegrees = bStacked ? 0 : m_aCtrlDial.GetRotation();
rOutAttrs->Put( SfxInt32Item( SCHATTR_TEXT_DEGREES, nDegrees ) );
- SvxFrameDirection aDirection( m_xLbTextDirection->get_active_id() );
- rOutAttrs->Put( SvxFrameDirectionItem( aDirection, EE_PARA_WRITINGDIR ) );
+ // I2TM
+ rOutAttrs->itemSet().setItem(Item::FrameDirection(m_xLbTextDirection->get_active_id()));
+ // SvxFrameDirection aDirection( m_xLbTextDirection->get_active_id() );
+ // rOutAttrs->Put( SvxFrameDirectionItem( aDirection, EE_PARA_WRITINGDIR ) );
return true;
}
@@ -118,8 +120,13 @@
m_xCbStacked->set_active(bStacked);
StackedToggleHdl(*m_xCbStacked);
- if( rInAttrs->GetItemState(EE_PARA_WRITINGDIR, true, &pItem) == SfxItemState::SET)
- m_xLbTextDirection->set_active_id(static_cast<const SvxFrameDirectionItem*>(pItem)->GetValue());
+ // I2TM
+ if(const auto Item(rInAttrs->itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet())
+ {
+ m_xLbTextDirection->set_active_id(Item.getItem().getValue());
+ }
+ // if( rInAttrs->GetItemState(EE_PARA_WRITINGDIR, true, &pItem) == SfxItemState::SET)
+ // m_xLbTextDirection->set_active_id(static_cast<const SvxFrameDirectionItem*>(pItem)->GetValue());
}
} //namespace chart
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index d165ccb..b12c79a 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -1410,7 +1410,11 @@
if( nWritingMode != -1 && nWritingMode != text::WritingMode2::PAGE )
{
if( pDrawModelWrapper.get() )
- pDrawModelWrapper->GetItemPool().SetPoolDefaultItem(SvxFrameDirectionItem(static_cast<SvxFrameDirection>(nWritingMode), EE_PARA_WRITINGDIR) );
+ {
+ // I2TM
+ pDrawModelWrapper->GetItemPool().getModelSpecificIValues()->setAlternativeDefaultItem(Item::FrameDirection(static_cast<SvxFrameDirection>(nWritingMode)));
+ // pDrawModelWrapper->GetItemPool().SetPoolDefaultItem(SvxFrameDirectionItem(static_cast<SvxFrameDirection>(nWritingMode), EE_PARA_WRITINGDIR) );
+ }
}
}
catch( const uno::Exception& )
@@ -1426,9 +1430,14 @@
if(!pDrawModelWrapper)
return nWritingMode;
- const SfxPoolItem& rItem = pDrawModelWrapper->GetItemPool().GetDefaultItem(EE_PARA_WRITINGDIR);
- nWritingMode
- = static_cast<sal_Int16>(static_cast<const SvxFrameDirectionItem&>(rItem).GetValue());
+ // I2TM
+ const Item::FrameDirection& rItem(static_cast<const Item::FrameDirection&>(
+ pDrawModelWrapper->GetItemPool().getModelSpecificIValues()->getDefault(Item::getDefault<Item::FrameDirection>())));
+ nWritingMode = static_cast<sal_Int16>(rItem.getValue());
+ // pDrawModelWrapper->GetItemPool().getModelSpecificIValues()->setAlternativeDefaultItem(Item::FrameDirection(static_cast<SvxFrameDirection>(nWritingMode)));
+ // const SfxPoolItem& rItem = pDrawModelWrapper->GetItemPool().GetDefaultItem(EE_PARA_WRITINGDIR);
+ // nWritingMode
+ // = static_cast<sal_Int16>(static_cast<const SvxFrameDirectionItem&>(rItem).GetValue());
return nWritingMode;
}
diff --git a/cui/source/tabpages/align.cxx b/cui/source/tabpages/align.cxx
index e9cf393..4492566 100644
--- a/cui/source/tabpages/align.cxx
+++ b/cui/source/tabpages/align.cxx
@@ -298,8 +298,10 @@
{
if (m_xLbFrameDir->get_value_changed_from_saved())
{
- SvxFrameDirection eDir = m_xLbFrameDir->get_active_id();
- rSet->Put(SvxFrameDirectionItem(eDir, GetWhich(SID_ATTR_FRAMEDIRECTION)));
+ // I2TM
+ rSet->itemSet().setItem(Item::FrameDirection(m_xLbFrameDir->get_active_id()));
+ // SvxFrameDirection eDir = m_xLbFrameDir->get_active_id();
+ // rSet->Put(SvxFrameDirectionItem(eDir, GetWhich(SID_ATTR_FRAMEDIRECTION)));
bChanged = true;
}
}
@@ -531,28 +533,50 @@
m_aVsRefEdge.SaveValue();
//text direction
- nWhich = GetWhich(SID_ATTR_FRAMEDIRECTION);
- eState = pCoreAttrs->GetItemState(nWhich);
- switch (eState)
+ // I2TM
+ if(const auto Item(pCoreAttrs->itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet() || Item.isDefault())
{
- case SfxItemState::UNKNOWN:
- m_xLbFrameDir->hide();
- break;
- case SfxItemState::DISABLED:
- case SfxItemState::READONLY:
- m_xLbFrameDir->set_sensitive(false);
- break;
- case SfxItemState::DONTCARE:
- m_xLbFrameDir->set_active(-1);
- break;
- case SfxItemState::DEFAULT:
- case SfxItemState::SET:
- {
- const SvxFrameDirectionItem& rFrameDirItem = static_cast<const SvxFrameDirectionItem&>(pCoreAttrs->Get(nWhich));
- m_xLbFrameDir->set_active_id(rFrameDirItem.GetValue());
- break;
- }
+ m_xLbFrameDir->set_active_id(Item.getItem().getValue());
}
+ else if(Item.isDontCare())
+ {
+ m_xLbFrameDir->set_active(-1);
+ }
+ else if(Item.isDisabled())
+ {
+ m_xLbFrameDir->set_sensitive(false);
+ }
+ // I2TM There is a single 'AddTabPage("alignment", RID_SVXPAGE_ALIGNMENT);' call, so *can*
+ // another ItemSet where Item::FrameDirection is *not* defined come in at all? Probably not,
+ // so this should not be needed.
+ // Checked that the SfxItemSet is the same as handed in at ::Create and at costructor.
+ // else // SfxItemState::UNKNOWN does not exist anymore - is this used?
+ // {
+ // m_xLbFrameDir->hide();
+ // }
+
+ // nWhich = GetWhich(SID_ATTR_FRAMEDIRECTION);
+ // eState = pCoreAttrs->GetItemState(nWhich);
+ // switch (eState)
+ // {
+ // case SfxItemState::UNKNOWN:
+ // m_xLbFrameDir->hide();
+ // break;
+ // case SfxItemState::DISABLED:
+ // case SfxItemState::READONLY:
+ // m_xLbFrameDir->set_sensitive(false);
+ // break;
+ // case SfxItemState::DONTCARE:
+ // m_xLbFrameDir->set_active(-1);
+ // break;
+ // case SfxItemState::DEFAULT:
+ // case SfxItemState::SET:
+ // {
+ // const SvxFrameDirectionItem& rFrameDirItem = static_cast<const SvxFrameDirectionItem&>(pCoreAttrs->Get(nWhich));
+ // m_xLbFrameDir->set_active_id(rFrameDirItem.GetValue());
+ // break;
+ // }
+ // }
// Special treatment for distributed alignment; we need to set the justify
diff --git a/cui/source/tabpages/page.cxx b/cui/source/tabpages/page.cxx
index e3c3b70..f5f30bd 100644
--- a/cui/source/tabpages/page.cxx
+++ b/cui/source/tabpages/page.cxx
@@ -545,18 +545,29 @@
m_xRegisterLB->save_value();
}
- SfxItemState eState = rSet->GetItemState( GetWhich( SID_ATTR_FRAMEDIRECTION ),
- true, &pItem );
- if( SfxItemState::UNKNOWN != eState )
- {
- SvxFrameDirection nVal = SfxItemState::SET == eState
- ? static_cast<const SvxFrameDirectionItem*>(pItem)->GetValue()
- : SvxFrameDirection::Horizontal_LR_TB;
- m_xTextFlowBox->set_active_id(nVal);
+ // I2TM will now always be != SfxItemState::UNKNOWN
+ SvxFrameDirection nVal(SvxFrameDirection::Horizontal_LR_TB);
- m_xTextFlowBox->save_value();
- m_aBspWin.SetFrameDirection(nVal);
+ if(const auto Item(rSet->itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet())
+ {
+ nVal = Item.getItem().getValue();
}
+
+ m_xTextFlowBox->set_active_id(nVal);
+ m_xTextFlowBox->save_value();
+ m_aBspWin.SetFrameDirection(nVal);
+ // SfxItemState eState = rSet->GetItemState( GetWhich( SID_ATTR_FRAMEDIRECTION ),
+ // true, &pItem );
+ // if( SfxItemState::UNKNOWN != eState )
+ // {
+ // SvxFrameDirection nVal = SfxItemState::SET == eState
+ // ? static_cast<const SvxFrameDirectionItem*>(pItem)->GetValue()
+ // : SvxFrameDirection::Horizontal_LR_TB;
+ // m_xTextFlowBox->set_active_id(nVal);
+
+ // m_xTextFlowBox->save_value();
+ // m_aBspWin.SetFrameDirection(nVal);
+ // }
}
void SvxPageDescPage::FillUserData()
diff --git a/cui/source/tabpages/paragrph.cxx b/cui/source/tabpages/paragrph.cxx
index caa7a97..867be52 100644
--- a/cui/source/tabpages/paragrph.cxx
+++ b/cui/source/tabpages/paragrph.cxx
@@ -633,19 +633,29 @@
SvxAdjust eAdjust = rAdj.GetAdjust();
if ( eAdjust == SvxAdjust::Center || eAdjust == SvxAdjust::Block )
{
- _nWhich = GetWhich( SID_ATTR_FRAMEDIRECTION );
- eItemState = rSet.GetItemState( _nWhich );
-
- if ( eItemState >= SfxItemState::DEFAULT )
+ // I2TM >= SfxItemState::DEFAULT means SET or DEFAULT
+ if(const auto Item(rSet.itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet() || Item.isDefault())
{
- const SvxFrameDirectionItem& rFrameDirItem = static_cast<const SvxFrameDirectionItem&>( rSet.Get( _nWhich ) );
- SvxFrameDirection eFrameDirection = rFrameDirItem.GetValue();
+ m_aExampleWin.EnableRTL(SvxFrameDirection::Horizontal_RL_TB == Item.getItem().getValue());
- m_aExampleWin.EnableRTL( SvxFrameDirection::Horizontal_RL_TB == eFrameDirection );
-
- if ( eAdjust == SvxAdjust::Block )
- m_aExampleWin.SetLastLine( rAdj.GetLastBlock() );
+ if(SvxAdjust::Block == eAdjust)
+ {
+ m_aExampleWin.SetLastLine(rAdj.GetLastBlock());
+ }
}
+ // _nWhich = GetWhich( SID_ATTR_FRAMEDIRECTION );
+ // eItemState = rSet.GetItemState( _nWhich );
+
+ // if ( eItemState >= SfxItemState::DEFAULT )
+ // {
+ // const SvxFrameDirectionItem& rFrameDirItem = static_cast<const SvxFrameDirectionItem&>( rSet.Get( _nWhich ) );
+ // SvxFrameDirection eFrameDirection = rFrameDirItem.GetValue();
+
+ // m_aExampleWin.EnableRTL( SvxFrameDirection::Horizontal_RL_TB == eFrameDirection );
+
+ // if ( eAdjust == SvxAdjust::Block )
+ // m_aExampleWin.SetLastLine( rAdj.GetLastBlock() );
+ // }
}
else
{
@@ -1124,8 +1134,10 @@
{
if (m_xTextDirectionLB->get_value_changed_from_saved())
{
- SvxFrameDirection eDir = m_xTextDirectionLB->get_active_id();
- rOutSet->Put( SvxFrameDirectionItem( eDir, GetWhich( SID_ATTR_FRAMEDIRECTION ) ) );
+ // I2TM
+ rOutSet->itemSet().setItem(Item::FrameDirection(m_xTextDirectionLB->get_active_id()));
+ // SvxFrameDirection eDir = m_xTextDirectionLB->get_active_id();
+ // rOutSet->Put( SvxFrameDirectionItem( eDir, GetWhich( SID_ATTR_FRAMEDIRECTION ) ) );
bModified = true;
}
}
@@ -1214,14 +1226,20 @@
m_xVertAlignLB->set_active(static_cast<sal_Int32>(rAlign.GetValue()));
}
- _nWhich = GetWhich( SID_ATTR_FRAMEDIRECTION );
+ // _nWhich = GetWhich( SID_ATTR_FRAMEDIRECTION );
//text direction
- if( SfxItemState::DEFAULT <= rSet->GetItemState( _nWhich ) )
+ // I2TM >= SfxItemState::DEFAULT means SET or DEFAULT
+ if(const auto Item(rSet->itemSet().getStateAndItem<Item::FrameDirection>()); Item.isSet() || Item.isDefault())
{
- const SvxFrameDirectionItem& rFrameDirItem = static_cast<const SvxFrameDirectionItem&>( rSet->Get( _nWhich ) );
- m_xTextDirectionLB->set_active_id(rFrameDirItem.GetValue());
+ m_xTextDirectionLB->set_active_id(Item.getItem().getValue());
m_xTextDirectionLB->save_value();
}
+ // if( SfxItemState::DEFAULT <= rSet->GetItemState( _nWhich ) )
+ // {
+ // const SvxFrameDirectionItem& rFrameDirItem = static_cast<const SvxFrameDirectionItem&>( rSet->Get( _nWhich ) );
+ // m_xTextDirectionLB->set_active_id(rFrameDirItem.GetValue());
+ // m_xTextDirectionLB->save_value();
+ // }
m_xSnapToGridCB->save_state();
m_xVertAlignLB->save_value();
diff --git a/editeng/CppunitTest_editeng_core.mk b/editeng/CppunitTest_editeng_core.mk
index 3b3a999..161646c 100644
--- a/editeng/CppunitTest_editeng_core.mk
+++ b/editeng/CppunitTest_editeng_core.mk
@@ -40,6 +40,7 @@
utl \
vcl \
xo \
+ item \
))
$(eval $(call gb_CppunitTest_use_externals,editeng_core,\
diff --git a/editeng/Library_editeng.mk b/editeng/Library_editeng.mk
index 9354071..e5c1c0c 100644
--- a/editeng/Library_editeng.mk
+++ b/editeng/Library_editeng.mk
@@ -150,6 +150,7 @@
sax \
i18nlangtag \
i18nutil \
+ item \
))
$(eval $(call gb_Library_use_externals,editeng,\
diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx
index 0d49c25..104ffab 100644
--- a/editeng/source/items/frmitems.cxx
+++ b/editeng/source/items/frmitems.cxx
@@ -3300,6 +3300,141 @@
xmlTextWriterEndElement(pWriter);
}
+const char* getFrmDirResId(size_t nIndex)
+{
+ const char* const RID_SVXITEMS_FRMDIR[] =
+ {
+ RID_SVXITEMS_FRMDIR_HORI_LEFT_TOP,
+ RID_SVXITEMS_FRMDIR_HORI_RIGHT_TOP,
+ RID_SVXITEMS_FRMDIR_VERT_TOP_RIGHT,
+ RID_SVXITEMS_FRMDIR_VERT_TOP_LEFT,
+ RID_SVXITEMS_FRMDIR_ENVIRONMENT
+ };
+ return RID_SVXITEMS_FRMDIR[nIndex];
+}
+
+///////////////////////////////////////////////////////////////////////////////
+#include <item/base/ItemControlBlock.hxx>
+
+namespace Item
+{
+ ItemControlBlock& FrameDirection::GetStaticItemControlBlock()
+ {
+ static ItemControlBlock aItemControlBlock(
+ [](){ return new FrameDirection(SvxFrameDirection::Horizontal_LR_TB); },
+ [](const ItemBase& rRef){ return new FrameDirection(static_cast<const FrameDirection&>(rRef)); },
+ "FrameDirection");
+
+ return aItemControlBlock;
+ }
+
+ FrameDirection::FrameDirection(SvxFrameDirection nValue)
+ : CntEnum<SvxFrameDirection>(
+ FrameDirection::GetStaticItemControlBlock(),
+ nValue)
+ {
+ }
+
+ bool FrameDirection::getPresentation(
+ SfxItemPresentation,
+ MapUnit,
+ MapUnit,
+ rtl::OUString& rText,
+ const IntlWrapper&) const
+ {
+ rText = EditResId(getFrmDirResId(getEnumValueAsSalUInt16()));
+ return true;
+ }
+
+ bool FrameDirection::queryValue(css::uno::Any& rVal, sal_uInt8) const
+ {
+ // translate SvxFrameDirection into WritingDirection2
+ sal_Int16 nVal(0);
+ bool bRet(true);
+
+ switch(getValue())
+ {
+ case SvxFrameDirection::Horizontal_LR_TB:
+ nVal = text::WritingMode2::LR_TB;
+ break;
+ case SvxFrameDirection::Horizontal_RL_TB:
+ nVal = text::WritingMode2::RL_TB;
+ break;
+ case SvxFrameDirection::Vertical_RL_TB:
+ nVal = text::WritingMode2::TB_RL;
+ break;
+ case SvxFrameDirection::Vertical_LR_TB:
+ nVal = text::WritingMode2::TB_LR;
+ break;
+ case SvxFrameDirection::Vertical_LR_BT:
+ nVal = text::WritingMode2::BT_LR;
+ break;
+ case SvxFrameDirection::Environment:
+ nVal = text::WritingMode2::PAGE;
+ break;
+ default:
+ OSL_FAIL("Unknown SvxFrameDirection value!");
+ bRet = false;
+ break;
+ }
+
+ // return value + error state
+ if(bRet)
+ {
+ rVal <<= nVal;
+ }
+
+ return bRet;
+ }
+
+ bool FrameDirection::putAnyValue(const css::uno::Any& rVal, sal_uInt8 nMemberId)
+ {
+ sal_Int16 nVal(-1);
+ bool bRet(rVal >>= nVal);
+
+ if(bRet)
+ {
+ // translate WritingDirection2 constants into SvxFrameDirection
+ switch( nVal )
+ {
+ case text::WritingMode2::LR_TB:
+ setValue( SvxFrameDirection::Horizontal_LR_TB );
+ break;
+ case text::WritingMode2::RL_TB:
+ setValue( SvxFrameDirection::Horizontal_RL_TB );
+ break;
+ case text::WritingMode2::TB_RL:
+ setValue( SvxFrameDirection::Vertical_RL_TB );
+ break;
+ case text::WritingMode2::TB_LR:
+ setValue( SvxFrameDirection::Vertical_LR_TB );
+ break;
+ case text::WritingMode2::BT_LR:
+ setValue( SvxFrameDirection::Vertical_LR_BT );
+ break;
+ case text::WritingMode2::PAGE:
+ setValue( SvxFrameDirection::Environment );
+ break;
+ default:
+ bRet = false;
+ break;
+ }
+ }
+
+ return bRet;
+ }
+
+ void FrameDirection::dumpAsXml(xmlTextWriterPtr pWriter) const
+ {
+ xmlTextWriterStartElement(pWriter, BAD_CAST("Item::FrameDirection"));
+ xmlTextWriterWriteAttribute(
+ pWriter, BAD_CAST("m_nValue"),
+ BAD_CAST(OString::number(getEnumValueAsSalUInt16()).getStr()));
+ xmlTextWriterEndElement(pWriter);
+ }
+} // end of namespace Item
+
+///////////////////////////////////////////////////////////////////////////////
SvxFrameDirectionItem::SvxFrameDirectionItem( SvxFrameDirection nValue ,
sal_uInt16 _nWhich )
@@ -3319,19 +3454,6 @@
}
-const char* getFrmDirResId(size_t nIndex)
-{
- const char* const RID_SVXITEMS_FRMDIR[] =
- {
- RID_SVXITEMS_FRMDIR_HORI_LEFT_TOP,
- RID_SVXITEMS_FRMDIR_HORI_RIGHT_TOP,
- RID_SVXITEMS_FRMDIR_VERT_TOP_RIGHT,
- RID_SVXITEMS_FRMDIR_VERT_TOP_LEFT,
- RID_SVXITEMS_FRMDIR_ENVIRONMENT
- };
- return RID_SVXITEMS_FRMDIR[nIndex];
-}
-
bool SvxFrameDirectionItem::GetPresentation(
SfxItemPresentation /*ePres*/,
MapUnit /*eCoreUnit*/,
diff --git a/include/editeng/frmdiritem.hxx b/include/editeng/frmdiritem.hxx
index 840cae4..8147ccb 100644
--- a/include/editeng/frmdiritem.hxx
+++ b/include/editeng/frmdiritem.hxx
@@ -28,6 +28,33 @@
layout text for Western, CJK and CTL languages.
*/
+///////////////////////////////////////////////////////////////////////////////
+#include <item/simple/CntEnum.hxx>
+
+namespace Item
+{
+ class EDITENG_DLLPUBLIC FrameDirection : public CntEnum<SvxFrameDirection>
+ {
+ public:
+ static ItemControlBlock& GetStaticItemControlBlock();
+
+ public:
+ FrameDirection(SvxFrameDirection nValue);
+
+ virtual bool getPresentation(
+ SfxItemPresentation,
+ MapUnit,
+ MapUnit,
+ rtl::OUString&,
+ const IntlWrapper&) const override;
+ virtual bool queryValue(css::uno::Any& rVal, sal_uInt8 nMemberId = 0) const override;
+ virtual bool putAnyValue(const css::uno::Any& rVal, sal_uInt8 nMemberId) override;
+ virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
+ };
+} // end of namespace Item
+
+///////////////////////////////////////////////////////////////////////////////
+
class EDITENG_DLLPUBLIC SvxFrameDirectionItem : public SfxEnumItem<SvxFrameDirection>
{
public:
diff --git a/include/item/base/ItemSet.hxx b/include/item/base/ItemSet.hxx
index e400fff..d6982c0 100644
--- a/include/item/base/ItemSet.hxx
+++ b/include/item/base/ItemSet.hxx
@@ -284,6 +284,18 @@
IState aIState(IState::DEFAULT);
const ItemBase* pItem(implGetStateAndItem(T::GetStaticItemControlBlock(), aIState, bSearchParent));
+ // SfxItemState::DEFAULT
+ // SfxItemState::DONTCARE || SfxItemState::DISABLED -> should already be
+ // solved from ImplInvalidateItem/ImplDisableItem, but to have the
+ // fallback here additionally is never wrong
+ // in short: no specific ItemBase -> use default
+ if(nullptr == pItem)
+ {
+ return StateAndItem<T>(
+ aIState,
+ Item::getDefault<T>());
+ }
+
// SfxItemState::SET
return StateAndItem<T>(
aIState,
diff --git a/include/item/simple/CntEnum.hxx b/include/item/simple/CntEnum.hxx
new file mode 100755
index 0000000..19b8ecf
--- /dev/null
+++ b/include/item/simple/CntEnum.hxx
@@ -0,0 +1,103 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_ITEM_SIMPLE_CNTENUM_HXX
+#define INCLUDED_ITEM_SIMPLE_CNTENUM_HXX
+
+#include <item/base/ItemBase.hxx>
+#include <item/base/ItemControlBlock.hxx>
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace Item
+{
+ class ITEM_DLLPUBLIC CntEnumBase : public ItemBase
+ {
+ protected:
+ // constructor for derived classes that *have* to hand
+ // in the to-be-used ItemControlBlock
+ CntEnumBase(ItemControlBlock& rItemControlBlock);
+
+ public:
+ CntEnumBase() = delete;
+ virtual bool operator==(const ItemBase&) const override;
+
+ virtual bool getPresentation(
+ SfxItemPresentation,
+ MapUnit,
+ MapUnit,
+ rtl::OUString&,
+ const IntlWrapper&) const override;
+ virtual bool queryValue(css::uno::Any& rVal, sal_uInt8 nMemberId = 0) const override;
+ virtual bool putAnyValue(const css::uno::Any& rVal, sal_uInt8 nMemberId) override;
+
+ protected:
+ // sal_uInt16 value interface
+ virtual sal_uInt16 getEnumValueAsSalUInt16() const = 0;
+ virtual void setEnumValueAsSalUInt16(sal_uInt16 nValue) = 0;
+
+ public:
+ // bool value interface - optionally supported, for UI stuff
+ virtual bool hasBoolValue() const;
+ virtual bool getBoolValue() const;
+ virtual void setBoolValue(bool bValue);
+ };
+} // end of namespace Item
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace Item
+{
+ template<typename EnumT> class SAL_DLLPUBLIC_RTTI CntEnum : public CntEnumBase
+ {
+ private:
+ EnumT m_nValue;
+
+ protected:
+ // constructor for derived classes that *have* to hand
+ // in the to-be-used ItemControlBlock
+ CntEnum(ItemControlBlock& rItemControlBlock, EnumT nVal)
+ : CntEnumBase(rItemControlBlock),
+ m_nValue(nVal)
+ {
+ }
+
+ public:
+ CntEnum() = delete;
+
+ // value interface
+ EnumT getValue() const
+ {
+ return m_nValue;
+ }
+
+ void setValue(EnumT nNew)
+ {
+ m_nValue = nNew;
+ }
+
+ protected:
+ // sal_uInt16 value interface
+ virtual sal_uInt16 getEnumValueAsSalUInt16() const override
+ {
+ return static_cast<sal_uInt16>(getValue());
+ }
+
+ virtual void setEnumValueAsSalUInt16(sal_uInt16 nValue) override
+ {
+ setValue(static_cast<EnumT>(nValue));
+ }
+ };
+} // end of namespace Item
+
+///////////////////////////////////////////////////////////////////////////////
+
+#endif // INCLUDED_ITEM_SIMPLE_CNTENUM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/item/simple/CntInt16.hxx b/include/item/simple/CntInt16.hxx
index fafd819..fe2acc7 100644
--- a/include/item/simple/CntInt16.hxx
+++ b/include/item/simple/CntInt16.hxx
@@ -50,7 +50,7 @@
public:
CntInt16() = delete;
- virtual bool operator==(const ItemBase&) const;
+ virtual bool operator==(const ItemBase&) const override;
sal_Int16 getValue() const { return m_nValue; }
void setValue(sal_Int16 nNew) { m_nValue = nNew; }
diff --git a/include/svl/itempool.hxx b/include/svl/itempool.hxx
index b8e6413..31da5b4 100644
--- a/include/svl/itempool.hxx
+++ b/include/svl/itempool.hxx
@@ -211,8 +211,11 @@
static const sal_uInt16 SFX_WHICH_MAX = 4999;
// I2TM Transfer phase: deliver ModelSpecificItemValues for this SfxItemPool/Model
+private:
+ // instance
+ Item::ModelSpecificItemValues::SharedPtr m_aModelSpecificItemValues;
public:
- virtual Item::ModelSpecificItemValues::SharedPtr getModelSpecificIValues() const;
+ Item::ModelSpecificItemValues::SharedPtr getModelSpecificIValues() const;
// ~I2TM
};
diff --git a/item/Library_item.mk b/item/Library_item.mk
index f89945a..93377e1 100644
--- a/item/Library_item.mk
+++ b/item/Library_item.mk
@@ -37,6 +37,7 @@
item/source/base/ItemBuffered \
item/source/base/ItemControlBlock \
item/source/simple/CntInt16 \
+ item/source/simple/CntEnum \
item/source/simple/CntOUString \
))
diff --git a/item/source/base/ItemBase.cxx b/item/source/base/ItemBase.cxx
index 1b6175c..df15575 100644
--- a/item/source/base/ItemBase.cxx
+++ b/item/source/base/ItemBase.cxx
@@ -84,6 +84,87 @@
Nonetheless these SlotItems STILL depend on the SfxItem-RANGES defined in the SfxItemSet
-> SLOT ITEMS do NOT get POOLED (IsItemPoolable/IsPooledItem/...)
-> SLOT ITEMS can be put in *any* ItemPool - due to not using the pooling mechanism
+
+///////////////////////////////////////////////////////////////////////////////
+What to do next? May try to replace all items from EditEngineItemPool and
+then rempve that one completely -> much problems out of the way...
+Items involved woul be (see DefItems::DefItems()):
+
+ rDefItems[0] = new SvxFrameDirectionItem( SvxFrameDirection::Horizontal_LR_TB, EE_PARA_WRITINGDIR );
+195 results in 94 files -> lot of stuff
+SvxFrameDirectionItem(EE_PARA_WRITINGDIR) -> Item::FrameDirection
+cui: SID_ATTR_FRAMEDIRECTION, uses GetWhich()
+sc: ATTR_WRITINGDIR
+sw: RES_FRAMEDIR, FN_TABLE_BOX_TEXTORIENTATION
+
+ rDefItems[1] = new SvXMLAttrContainerItem( EE_PARA_XMLATTRIBS );
+ rDefItems[2] = new SvxHangingPunctuationItem(false, EE_PARA_HANGINGPUNCTUATION);
+ rDefItems[3] = new SvxForbiddenRuleItem(true, EE_PARA_FORBIDDENRULES);
+ rDefItems[4] = new SvxScriptSpaceItem( true, EE_PARA_ASIANCJKSPACING );
+ SvxNumRule aDefaultNumRule( SvxNumRuleFlags::NONE, 0, false );
+ rDefItems[5] = new SvxNumBulletItem( aDefaultNumRule, EE_PARA_NUMBULLET );
+ rDefItems[6] = new SfxBoolItem( EE_PARA_HYPHENATE, false );
+ rDefItems[7] = new SfxBoolItem( EE_PARA_BULLETSTATE, true );
+ rDefItems[8] = new SvxLRSpaceItem( EE_PARA_OUTLLRSPACE );
+ rDefItems[9] = new SfxInt16Item( EE_PARA_OUTLLEVEL, -1 );
+ rDefItems[10] = new SvxBulletItem( EE_PARA_BULLET );
+ rDefItems[11] = new SvxLRSpaceItem( EE_PARA_LRSPACE );
+ rDefItems[12] = new SvxULSpaceItem( EE_PARA_ULSPACE );
+ rDefItems[13] = new SvxLineSpacingItem( 0, EE_PARA_SBL );
+ rDefItems[14] = new SvxAdjustItem( SvxAdjust::Left, EE_PARA_JUST );
+ rDefItems[15] = new SvxTabStopItem( 0, 0, SvxTabAdjust::Left, EE_PARA_TABS );
+ rDefItems[16] = new SvxJustifyMethodItem( SvxCellJustifyMethod::Auto, EE_PARA_JUST_METHOD );
+ rDefItems[17] = new SvxVerJustifyItem( SvxCellVerJustify::Standard, EE_PARA_VER_JUST );
+
+ // Character attributes:
+ rDefItems[18] = new SvxColorItem( COL_AUTO, EE_CHAR_COLOR );
+ rDefItems[19] = new SvxFontItem( EE_CHAR_FONTINFO );
+ rDefItems[20] = new SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT );
+ rDefItems[21] = new SvxCharScaleWidthItem( 100, EE_CHAR_FONTWIDTH );
+ rDefItems[22] = new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT );
+ rDefItems[23] = new SvxUnderlineItem( LINESTYLE_NONE, EE_CHAR_UNDERLINE );
+ rDefItems[24] = new SvxCrossedOutItem( STRIKEOUT_NONE, EE_CHAR_STRIKEOUT );
+ rDefItems[25] = new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC );
+ rDefItems[26] = new SvxContourItem( false, EE_CHAR_OUTLINE );
+ rDefItems[27] = new SvxShadowedItem( false, EE_CHAR_SHADOW );
+ rDefItems[28] = new SvxEscapementItem( 0, 100, EE_CHAR_ESCAPEMENT );
+ rDefItems[29] = new SvxAutoKernItem( false, EE_CHAR_PAIRKERNING );
+ rDefItems[30] = new SvxKerningItem( 0, EE_CHAR_KERNING );
+ rDefItems[31] = new SvxWordLineModeItem( false, EE_CHAR_WLM );
+ rDefItems[32] = new SvxLanguageItem( LANGUAGE_DONTKNOW, EE_CHAR_LANGUAGE );
+ rDefItems[33] = new SvxLanguageItem( LANGUAGE_DONTKNOW, EE_CHAR_LANGUAGE_CJK );
+ rDefItems[34] = new SvxLanguageItem( LANGUAGE_DONTKNOW, EE_CHAR_LANGUAGE_CTL );
+ rDefItems[35] = new SvxFontItem( EE_CHAR_FONTINFO_CJK );
+ rDefItems[36] = new SvxFontItem( EE_CHAR_FONTINFO_CTL );
+ rDefItems[37] = new SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT_CJK );
+ rDefItems[38] = new SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT_CTL );
+ rDefItems[39] = new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK );
+ rDefItems[40] = new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL );
+ rDefItems[41] = new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK );
+ rDefItems[42] = new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL );
+ rDefItems[43] = new SvxEmphasisMarkItem( FontEmphasisMark::NONE, EE_CHAR_EMPHASISMARK );
+ rDefItems[44] = new SvxCharReliefItem( FontRelief::NONE, EE_CHAR_RELIEF );
+ rDefItems[45] = new SfxVoidItem( EE_CHAR_RUBI_DUMMY );
+ rDefItems[46] = new SvXMLAttrContainerItem( EE_CHAR_XMLATTRIBS );
+ rDefItems[47] = new SvxOverlineItem( LINESTYLE_NONE, EE_CHAR_OVERLINE );
+ rDefItems[48] = new SvxCaseMapItem( SvxCaseMap::NotMapped, EE_CHAR_CASEMAP );
+ rDefItems[49] = new SfxGrabBagItem( EE_CHAR_GRABBAG );
+ rDefItems[50] = new SvxBackgroundColorItem( COL_AUTO, EE_CHAR_BKGCOLOR );
+ // Features
+ rDefItems[51] = new SfxVoidItem( EE_FEATURE_TAB );
+ rDefItems[52] = new SfxVoidItem( EE_FEATURE_LINEBR );
+ rDefItems[53] = new SvxColorItem( COL_RED, EE_FEATURE_NOTCONV );
+ rDefItems[54] = new SvxFieldItem( SvxFieldData(), EE_FEATURE_FIELD );
+
+ assert(EDITITEMCOUNT == 55 && "ITEMCOUNT changed, adjust DefItems!");
+
+ // Init DefFonts:
+ GetDefaultFonts( *static_cast<SvxFontItem*>(rDefItems[EE_CHAR_FONTINFO - EE_ITEMS_START]),
+ *static_cast<SvxFontItem*>(rDefItems[EE_CHAR_FONTINFO_CJK - EE_ITEMS_START]),
+ *static_cast<SvxFontItem*>(rDefItems[EE_CHAR_FONTINFO_CTL - EE_ITEMS_START]) );
+
+
+
*/
///////////////////////////////////////////////////////////////////////////////
diff --git a/item/source/simple/CntEnum.cxx b/item/source/simple/CntEnum.cxx
new file mode 100755
index 0000000..9a6f106
--- /dev/null
+++ b/item/source/simple/CntEnum.cxx
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <item/simple/CntEnum.hxx>
+#include <item/base/ItemControlBlock.hxx>
+#include <comphelper/extract.hxx>
+#include <cassert>
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace Item
+{
+ CntEnumBase::CntEnumBase(ItemControlBlock& rItemControlBlock)
+ : ItemBase(rItemControlBlock)
+ {
+ }
+
+ bool CntEnumBase::operator==(const ItemBase& rRef) const
+ {
+ return ItemBase::operator==(rRef) || // ptr-compare
+ getEnumValueAsSalUInt16() == static_cast<const CntEnumBase&>(rRef).getEnumValueAsSalUInt16();
+ }
+
+ bool CntEnumBase::getPresentation(
+ SfxItemPresentation,
+ MapUnit,
+ MapUnit,
+ rtl::OUString& rText,
+ const IntlWrapper&) const
+ {
+ rText = rtl::OUString::number(getEnumValueAsSalUInt16());
+ return true;
+ }
+
+ bool CntEnumBase::queryValue(css::uno::Any& rVal, sal_uInt8) const
+ {
+ rVal <<= sal_Int32(getEnumValueAsSalUInt16());
+ return true;
+ }
+
+ bool CntEnumBase::putAnyValue(const css::uno::Any& rVal, sal_uInt8)
+ {
+ sal_Int32 nTheValue(0);
+
+ if(::cppu::enum2int(nTheValue, rVal))
+ {
+ setEnumValueAsSalUInt16(static_cast<sal_uInt16>(nTheValue));
+ return true;
+ }
+
+ assert(false && "CntEnumBase::putAnyValue - Wrong type!");
+ return false;
+ }
+
+ bool CntEnumBase::hasBoolValue() const
+ {
+ return false;
+ }
+
+ bool CntEnumBase::getBoolValue() const
+ {
+ return false;
+ }
+
+ void CntEnumBase::setBoolValue(bool /*bValue*/)
+ {
+ }
+} // end of namespace Item
+
+///////////////////////////////////////////////////////////////////////////////
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index 6263ec3..03f157b 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -6405,6 +6405,7 @@
include/item/base/IBaseStaticHelper.hxx
include/item/base/ISet.hxx
include/item/base/ModelSpecificIValues.hxx
+include/item/simple/CntEnum.hxx
include/item/simple/CntInt16.hxx
include/item/simple/CntOUString.hxx
include/jvmaccess/classpath.hxx
@@ -8142,6 +8143,7 @@
item/source/base/IBase.cxx
item/source/base/ISet.cxx
item/source/base/ModelSpecificIValues.cxx
+item/source/simple/CntEnum.cxx
item/source/simple/CntInt16.cxx
item/source/simple/CntOUString.cxx
item/test/ItemTest.cxx
diff --git a/svl/source/items/itempool.cxx b/svl/source/items/itempool.cxx
index 2ba0f5f..fad45df 100644
--- a/svl/source/items/itempool.cxx
+++ b/svl/source/items/itempool.cxx
@@ -193,7 +193,9 @@
but no transfer of ownership */
) :
pItemInfos(pInfo),
- pImpl( new SfxItemPool_Impl( this, rName, nStartWhich, nEndWhich ) )
+ pImpl( new SfxItemPool_Impl( this, rName, nStartWhich, nEndWhich ) ),
+ // I2TM
+ m_aModelSpecificItemValues()
{
pImpl->eDefMetric = MapUnit::MapTwip;
@@ -217,7 +219,9 @@
Take over static Defaults */
) :
pItemInfos(rPool.pItemInfos),
- pImpl( new SfxItemPool_Impl( this, rPool.pImpl->aName, rPool.pImpl->mnStart, rPool.pImpl->mnEnd ) )
+ pImpl( new SfxItemPool_Impl( this, rPool.pImpl->aName, rPool.pImpl->mnStart, rPool.pImpl->mnEnd ) ),
+ // I2TM
+ m_aModelSpecificItemValues()
{
pImpl->eDefMetric = rPool.pImpl->eDefMetric;
@@ -953,15 +957,12 @@
// I2TM Transfer phase: deliver ModelSpecificItemValues for this SfxItemPool/Model
Item::ModelSpecificItemValues::SharedPtr SfxItemPool::getModelSpecificIValues() const
{
- // global static instance fallback for all SfxItemPool(s)
- static Item::ModelSpecificItemValues::SharedPtr aGlobalDefault;
-
- if(!aGlobalDefault)
+ if(!m_aModelSpecificItemValues)
{
- aGlobalDefault = Item::ModelSpecificItemValues::create();
+ const_cast<SfxItemPool*>(this)->m_aModelSpecificItemValues = Item::ModelSpecificItemValues::create();
}
- return aGlobalDefault;
+ return m_aModelSpecificItemValues;
}
// ~I2TM