sc/source/core/data/docpool.cxx       |   40 +++++++--------
 sc/source/ui/pagedlg/scuitphfedit.cxx |   12 ++--
 sc/source/ui/pagedlg/tptable.cxx      |   89 ++++++++++++++++------------------
 svl/qa/unit/items/stylepool.cxx       |    2 
 svl/qa/unit/items/test_itempool.cxx   |    8 +--
 svl/source/items/itempool.cxx         |   18 ++++++
 6 files changed, 91 insertions(+), 78 deletions(-)

New commits:
commit d4f61a594608219d08b489205ebb5569d905f444
Author:     Noel Grandin <[email protected]>
AuthorDate: Wed Feb 2 09:52:49 2022 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Thu Feb 3 13:54:12 2022 +0100

    no point in mapping SID to itself
    
    and once we remove that self mapping, no need to call GetWhich for those
    IDs either
    
    Change-Id: Ia881328a29bb022dace8d5f25c57279a381e0377
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129321
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/sc/source/core/data/docpool.cxx b/sc/source/core/data/docpool.cxx
index 38dfcb1187df..9ebf027dee89 100644
--- a/sc/source/core/data/docpool.cxx
+++ b/sc/source/core/data/docpool.cxx
@@ -137,7 +137,7 @@ SfxItemInfo const  aItemInfos[] =
     { 0,                            true },    // ATTR_MERGE
     { 0,                            true },    // ATTR_MERGE_FLAG
     { SID_ATTR_NUMBERFORMAT_VALUE,  true },    // ATTR_VALUE_FORMAT
-    { ATTR_LANGUAGE_FORMAT,         true },    // ATTR_LANGUAGE_FORMAT from 
329, is combined with SID_ATTR_NUMBERFORMAT_VALUE in the dialog
+    { 0,                            true },    // ATTR_LANGUAGE_FORMAT from 
329, is combined with SID_ATTR_NUMBERFORMAT_VALUE in the dialog
     { SID_ATTR_BRUSH,               true },    // ATTR_BACKGROUND
     { SID_SCATTR_PROTECTION,        true },    // ATTR_PROTECTION
     { SID_ATTR_BORDER_OUTER,        true },    // ATTR_BORDER
@@ -158,27 +158,27 @@ SfxItemInfo const  aItemInfos[] =
     { SID_ATTR_PAGE_DYNAMIC,        true },    // ATTR_PAGE_DYNAMIC
     { SID_ATTR_PAGE_SHARED,         true },    // ATTR_PAGE_SHARED
     { SID_ATTR_PAGE_SHARED_FIRST,   true },    // ATTR_PAGE_SHARED_FIRST
-    { SID_SCATTR_PAGE_NOTES,        true },    // ATTR_PAGE_NOTES
-    { SID_SCATTR_PAGE_GRID,         true },    // ATTR_PAGE_GRID
-    { SID_SCATTR_PAGE_HEADERS,      true },    // ATTR_PAGE_HEADERS
-    { SID_SCATTR_PAGE_CHARTS,       true },    // ATTR_PAGE_CHARTS
-    { SID_SCATTR_PAGE_OBJECTS,      true },    // ATTR_PAGE_OBJECTS
-    { SID_SCATTR_PAGE_DRAWINGS,     true },    // ATTR_PAGE_DRAWINGS
-    { SID_SCATTR_PAGE_TOPDOWN,      true },    // ATTR_PAGE_TOPDOWN
-    { SID_SCATTR_PAGE_SCALE,        true },    // ATTR_PAGE_SCALE
-    { SID_SCATTR_PAGE_SCALETOPAGES, true },    // ATTR_PAGE_SCALETOPAGES
-    { SID_SCATTR_PAGE_FIRSTPAGENO,  true },    // ATTR_PAGE_FIRSTPAGENO
-    { SID_SCATTR_PAGE_HEADERLEFT,   true },    // ATTR_PAGE_HEADERLEFT
-    { SID_SCATTR_PAGE_FOOTERLEFT,   true },    // ATTR_PAGE_FOOTERLEFT
-    { SID_SCATTR_PAGE_HEADERRIGHT,  true },    // ATTR_PAGE_HEADERRIGHT
-    { SID_SCATTR_PAGE_FOOTERRIGHT,  true },    // ATTR_PAGE_FOOTERRIGHT
-    { SID_SCATTR_PAGE_HEADERFIRST,  true },    // ATTR_PAGE_HEADERFIRST
-    { SID_SCATTR_PAGE_FOOTERFIRST,  true },    // ATTR_PAGE_FOOTERFIRST
+    { 0,                            true },    // ATTR_PAGE_NOTES aka. 
SID_SCATTR_PAGE_NOTES
+    { 0,                            true },    // ATTR_PAGE_GRID aka. 
SID_SCATTR_PAGE_GRID
+    { 0,                            true },    // ATTR_PAGE_HEADERS aka. 
SID_SCATTR_PAGE_HEADERS
+    { 0,                            true },    // ATTR_PAGE_CHARTS aka. 
SID_SCATTR_PAGE_CHARTS
+    { 0,                            true },    // ATTR_PAGE_OBJECTS aka. 
SID_SCATTR_PAGE_OBJECTS
+    { 0,                            true },    // ATTR_PAGE_DRAWINGS aka. 
SID_SCATTR_PAGE_DRAWINGS
+    { 0,                            true },    // ATTR_PAGE_TOPDOWN aka. 
SID_SCATTR_PAGE_TOPDOWN
+    { 0,                            true },    // ATTR_PAGE_SCALE aka 
SID_SCATTR_PAGE_SCALE
+    { 0,                            true },    // ATTR_PAGE_SCALETOPAGES aka 
SID_SCATTR_PAGE_SCALETOPAGES
+    { 0,                            true },    // ATTR_PAGE_FIRSTPAGENO aka 
SID_SCATTR_PAGE_FIRSTPAGENO
+    { 0,                            true },    // ATTR_PAGE_HEADERLEFT aka 
SID_SCATTR_PAGE_HEADERLEFT
+    { 0,                            true },    // ATTR_PAGE_FOOTERLEFT aka 
SID_SCATTR_PAGE_FOOTERLEFT
+    { 0,                            true },    // ATTR_PAGE_HEADERRIGHT aka 
SID_SCATTR_PAGE_HEADERRIGHT
+    { 0,                            true },    // ATTR_PAGE_FOOTERRIGHT aka. 
SID_SCATTR_PAGE_FOOTERRIGHT
+    { 0,                            true },    // ATTR_PAGE_HEADERFIRST aka. 
SID_SCATTR_PAGE_HEADERFIRST
+    { 0,                            true },    // ATTR_PAGE_FOOTERFIRST aka. 
SID_SCATTR_PAGE_FOOTERFIRST`
     { SID_ATTR_PAGE_HEADERSET,      true },    // ATTR_PAGE_HEADERSET
     { SID_ATTR_PAGE_FOOTERSET,      true },    // ATTR_PAGE_FOOTERSET
-    { SID_SCATTR_PAGE_FORMULAS,     true },    // ATTR_PAGE_FORMULAS
-    { SID_SCATTR_PAGE_NULLVALS,     true },    // ATTR_PAGE_NULLVALS
-    { SID_SCATTR_PAGE_SCALETO,      true },    // ATTR_PAGE_SCALETO
+    { 0,                            true },    // ATTR_PAGE_FORMULAS aka. 
SID_SCATTR_PAGE_FORMULAS
+    { 0,                            true },    // ATTR_PAGE_NULLVALS aka. 
SID_SCATTR_PAGE_NULLVALS
+    { 0,                            true },    // ATTR_PAGE_SCALETO aka. 
SID_SCATTR_PAGE_SCALETO
     { 0,                            true }     // ATTR_HIDDEN
 };
 static_assert(
diff --git a/sc/source/ui/pagedlg/scuitphfedit.cxx 
b/sc/source/ui/pagedlg/scuitphfedit.cxx
index 11f430e63ad9..80a5db3027a9 100644
--- a/sc/source/ui/pagedlg/scuitphfedit.cxx
+++ b/sc/source/ui/pagedlg/scuitphfedit.cxx
@@ -781,7 +781,7 @@ IMPL_LINK(ScHFEditPage, MenuHdl, const OString&, 
rSelectedId, void)
 ScFirstHeaderEditPage::ScFirstHeaderEditPage( weld::Container* pPage, 
weld::DialogController* pController, const SfxItemSet& rCoreSet )
     : ScHFEditPage( pPage, pController,
                     rCoreSet,
-                    rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERFIRST ),
+                    SID_SCATTR_PAGE_HEADERFIRST,
                     true )
     {}
 
@@ -794,7 +794,7 @@ std::unique_ptr<SfxTabPage> ScFirstHeaderEditPage::Create( 
weld::Container* pPag
 ScRightHeaderEditPage::ScRightHeaderEditPage( weld::Container* pPage, 
weld::DialogController* pController, const SfxItemSet& rCoreSet )
     : ScHFEditPage( pPage, pController,
                     rCoreSet,
-                    rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERRIGHT ),
+                    SID_SCATTR_PAGE_HEADERRIGHT,
                     true )
     {}
 
@@ -807,7 +807,7 @@ std::unique_ptr<SfxTabPage> ScRightHeaderEditPage::Create( 
weld::Container* pPag
 ScLeftHeaderEditPage::ScLeftHeaderEditPage( weld::Container* pPage, 
weld::DialogController* pController, const SfxItemSet& rCoreSet )
     : ScHFEditPage( pPage, pController,
                     rCoreSet,
-                    rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERLEFT ),
+                    SID_SCATTR_PAGE_HEADERLEFT,
                     true )
     {}
 
@@ -820,7 +820,7 @@ std::unique_ptr<SfxTabPage> ScLeftHeaderEditPage::Create( 
weld::Container* pPage
 ScFirstFooterEditPage::ScFirstFooterEditPage( weld::Container* pPage, 
weld::DialogController* pController, const SfxItemSet& rCoreSet )
     : ScHFEditPage( pPage, pController,
                     rCoreSet,
-                    rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERFIRST ),
+                    SID_SCATTR_PAGE_FOOTERFIRST,
                     false )
     {}
 
@@ -833,7 +833,7 @@ std::unique_ptr<SfxTabPage> ScFirstFooterEditPage::Create( 
weld::Container* pPag
 ScRightFooterEditPage::ScRightFooterEditPage( weld::Container* pPage, 
weld::DialogController* pController, const SfxItemSet& rCoreSet )
     : ScHFEditPage( pPage, pController,
                     rCoreSet,
-                    rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERRIGHT ),
+                    SID_SCATTR_PAGE_FOOTERRIGHT,
                     false )
     {}
 
@@ -846,7 +846,7 @@ std::unique_ptr<SfxTabPage> ScRightFooterEditPage::Create( 
weld::Container* pPag
 ScLeftFooterEditPage::ScLeftFooterEditPage( weld::Container* pPage, 
weld::DialogController* pController, const SfxItemSet& rCoreSet )
     : ScHFEditPage( pPage, pController,
                     rCoreSet,
-                    rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERLEFT ),
+                    SID_SCATTR_PAGE_FOOTERLEFT,
                     false )
     {}
 
diff --git a/sc/source/ui/pagedlg/tptable.cxx b/sc/source/ui/pagedlg/tptable.cxx
index de63dd437fc7..d5c50b930a2b 100644
--- a/sc/source/ui/pagedlg/tptable.cxx
+++ b/sc/source/ui/pagedlg/tptable.cxx
@@ -33,12 +33,12 @@
 const WhichRangesContainer ScTablePage::pPageTableRanges(
     svl::Items<ATTR_PAGE_NOTES, ATTR_PAGE_FIRSTPAGENO>);
 
-static bool lcl_PutVObjModeItem(sal_uInt16  nWhich,
+static bool lcl_PutVObjModeItem(TypedWhichId<ScViewObjectModeItem>  nWhich,
                           SfxItemSet&       rCoreSet,
                           const SfxItemSet& rOldSet,
                           const weld::Toggleable& rBtn);
 
-static bool lcl_PutScaleItem( sal_uInt16    nWhich,
+static bool lcl_PutScaleItem( TypedWhichId<SfxUInt16Item>    nWhich,
                        SfxItemSet&          rCoreSet,
                        const SfxItemSet&    rOldSet,
                        const weld::ComboBox& rListBox,
@@ -46,7 +46,7 @@ static bool lcl_PutScaleItem( sal_uInt16    nWhich,
                        const weld::MetricSpinButton& rEd,
                        sal_uInt16           nValue );
 
-static bool lcl_PutScaleItem2( sal_uInt16   nWhich,
+static bool lcl_PutScaleItem2( TypedWhichId<ScPageScaleToItem>   nWhich,
                        SfxItemSet&          rCoreSet,
                        const SfxItemSet&    rOldSet,
                        const weld::ComboBox& rListBox,
@@ -56,7 +56,7 @@ static bool lcl_PutScaleItem2( sal_uInt16   nWhich,
                        const weld::SpinButton& rEd2,
                        sal_uInt16           nOrigScalePageHeight );
 
-static bool lcl_PutScaleItem3( sal_uInt16    nWhich,
+static bool lcl_PutScaleItem3( TypedWhichId<SfxUInt16Item>    nWhich,
                        SfxItemSet&          rCoreSet,
                        const SfxItemSet&    rOldSet,
                        const weld::ComboBox& rListBox,
@@ -64,7 +64,7 @@ static bool lcl_PutScaleItem3( sal_uInt16    nWhich,
                        const weld::SpinButton& rEd,
                        sal_uInt16           nValue );
 
-static bool lcl_PutBoolItem( sal_uInt16 nWhich,
+static bool lcl_PutBoolItem( TypedWhichId<SfxBoolItem> nWhich,
                       SfxItemSet&       rCoreSet,
                       const SfxItemSet& rOldSet,
                       bool              bIsChecked,
@@ -77,10 +77,6 @@ bool WAS_DEFAULT(sal_uInt16 w, SfxItemSet const & s)
 
 }
 
-#define GET_BOOL(sid,set)   static_cast<const 
SfxBoolItem&>((set).Get(GetWhich((sid)))).GetValue()
-#define GET_USHORT(sid,set) static_cast<const 
SfxUInt16Item&>((set).Get(GetWhich((sid)))).GetValue()
-#define GET_SHOW(sid,set)   ( static_cast<const 
ScViewObjectModeItem&>((set).Get(GetWhich((sid)))).GetValue() \
-                              == VOBJ_MODE_SHOW )
 // List box entries "Scaling mode"
 #define SC_TPTABLE_SCALE_PERCENT    0
 #define SC_TPTABLE_SCALE_TO         1
@@ -141,43 +137,42 @@ std::unique_ptr<SfxTabPage> 
ScTablePage::Create(weld::Container* pPage, weld::Di
 
 void ScTablePage::Reset( const SfxItemSet* rCoreSet )
 {
-    bool    bTopDown = GET_BOOL( SID_SCATTR_PAGE_TOPDOWN, *rCoreSet );
-    sal_uInt16  nWhich   = 0;
+    bool    bTopDown = rCoreSet->Get(SID_SCATTR_PAGE_TOPDOWN).GetValue();
 
     // sal_Bool flags
-    m_xBtnNotes->set_active( GET_BOOL(SID_SCATTR_PAGE_NOTES,*rCoreSet) );
-    m_xBtnGrid->set_active( GET_BOOL(SID_SCATTR_PAGE_GRID,*rCoreSet) );
-    m_xBtnHeaders->set_active( GET_BOOL(SID_SCATTR_PAGE_HEADERS,*rCoreSet) );
-    m_xBtnFormulas->set_active( GET_BOOL(SID_SCATTR_PAGE_FORMULAS,*rCoreSet) );
-    m_xBtnNullVals->set_active( GET_BOOL(SID_SCATTR_PAGE_NULLVALS,*rCoreSet) );
+    m_xBtnNotes->set_active( rCoreSet->Get(SID_SCATTR_PAGE_NOTES).GetValue() );
+    m_xBtnGrid->set_active( rCoreSet->Get(SID_SCATTR_PAGE_GRID).GetValue() );
+    m_xBtnHeaders->set_active( 
rCoreSet->Get(SID_SCATTR_PAGE_HEADERS).GetValue() );
+    m_xBtnFormulas->set_active( 
rCoreSet->Get(SID_SCATTR_PAGE_FORMULAS).GetValue() );
+    m_xBtnNullVals->set_active( 
rCoreSet->Get(SID_SCATTR_PAGE_NULLVALS).GetValue() );
     m_xBtnTopDown->set_active( bTopDown );
     m_xBtnLeftRight->set_active( !bTopDown );
 
     // first printed page:
-    sal_uInt16 nPage = GET_USHORT(SID_SCATTR_PAGE_FIRSTPAGENO,*rCoreSet);
+    sal_uInt16 nPage = rCoreSet->Get(SID_SCATTR_PAGE_FIRSTPAGENO).GetValue();
     m_xBtnPageNo->set_active( nPage != 0 );
     m_xEdPageNo->set_value( (nPage != 0) ? nPage : 1 );
     PageNoHdl(nullptr);
 
     // object representation:
-    m_xBtnCharts->set_active( GET_SHOW( SID_SCATTR_PAGE_CHARTS, *rCoreSet ) );
-    m_xBtnObjects->set_active( GET_SHOW( SID_SCATTR_PAGE_OBJECTS, *rCoreSet ) 
);
-    m_xBtnDrawings->set_active( GET_SHOW( SID_SCATTR_PAGE_DRAWINGS, *rCoreSet 
) );
+    m_xBtnCharts->set_active( rCoreSet->Get(SID_SCATTR_PAGE_CHARTS).GetValue() 
== VOBJ_MODE_SHOW );
+    m_xBtnObjects->set_active( 
rCoreSet->Get(SID_SCATTR_PAGE_OBJECTS).GetValue() == VOBJ_MODE_SHOW );
+    m_xBtnDrawings->set_active( 
rCoreSet->Get(SID_SCATTR_PAGE_DRAWINGS).GetValue() == VOBJ_MODE_SHOW );
 
     // scaling:
-    nWhich = GetWhich(SID_SCATTR_PAGE_SCALE);
-    if ( rCoreSet->GetItemState( nWhich ) >= SfxItemState::DEFAULT )
+    constexpr auto nWhichPageScale = SID_SCATTR_PAGE_SCALE;
+    if ( rCoreSet->GetItemState( nWhichPageScale ) >= SfxItemState::DEFAULT )
     {
-        sal_uInt16 nScale = static_cast<const 
SfxUInt16Item&>(rCoreSet->Get(nWhich)).GetValue();
+        sal_uInt16 nScale = rCoreSet->Get(nWhichPageScale).GetValue();
         if( nScale > 0 )
             m_xLbScaleMode->set_active(SC_TPTABLE_SCALE_PERCENT);
         m_xEdScaleAll->set_value((nScale > 0) ? nScale : 100, 
FieldUnit::PERCENT);
     }
 
-    nWhich = GetWhich(SID_SCATTR_PAGE_SCALETO);
-    if ( rCoreSet->GetItemState( nWhich ) >= SfxItemState::DEFAULT )
+    constexpr auto nWhichScaleTo = SID_SCATTR_PAGE_SCALETO;
+    if ( rCoreSet->GetItemState( nWhichScaleTo ) >= SfxItemState::DEFAULT )
     {
-        const ScPageScaleToItem& rItem = static_cast< const ScPageScaleToItem& 
>( rCoreSet->Get( nWhich ) );
+        const ScPageScaleToItem& rItem = rCoreSet->Get( nWhichScaleTo );
         sal_uInt16 nWidth = rItem.GetWidth();
         sal_uInt16 nHeight = rItem.GetHeight();
 
@@ -205,10 +200,10 @@ void ScTablePage::Reset( const SfxItemSet* rCoreSet )
         m_xCbScalePageHeight->set_active(nHeight != 0);
     }
 
-    nWhich = GetWhich(SID_SCATTR_PAGE_SCALETOPAGES);
-    if ( rCoreSet->GetItemState( nWhich ) >= SfxItemState::DEFAULT )
+    constexpr auto nWhichScale = SID_SCATTR_PAGE_SCALETOPAGES;
+    if ( rCoreSet->GetItemState( nWhichScale ) >= SfxItemState::DEFAULT )
     {
-        sal_uInt16 nPages = static_cast<const 
SfxUInt16Item&>(rCoreSet->Get(nWhich)).GetValue();
+        sal_uInt16 nPages = rCoreSet->Get(nWhichScale).GetValue();
         if( nPages > 0 )
             m_xLbScaleMode->set_active(SC_TPTABLE_SCALE_TO_PAGES);
         m_xEdScalePageNum->set_value( (nPages > 0) ? nPages : 1 );
@@ -248,36 +243,36 @@ void ScTablePage::Reset( const SfxItemSet* rCoreSet )
 bool ScTablePage::FillItemSet( SfxItemSet* rCoreSet )
 {
     const SfxItemSet&   rOldSet      = GetItemSet();
-    sal_uInt16              nWhichPageNo = 
GetWhich(SID_SCATTR_PAGE_FIRSTPAGENO);
+    constexpr sal_uInt16 nWhichPageNo = SID_SCATTR_PAGE_FIRSTPAGENO;
     bool                bDataChanged = false;
 
     // sal_Bool flags
-    bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_NOTES),
+    bDataChanged |= lcl_PutBoolItem( SID_SCATTR_PAGE_NOTES,
                                      *rCoreSet, rOldSet,
                                      m_xBtnNotes->get_active(),
                                      m_xBtnNotes->get_saved_state() != 
TRISTATE_FALSE );
 
-    bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_GRID),
+    bDataChanged |= lcl_PutBoolItem( SID_SCATTR_PAGE_GRID,
                                      *rCoreSet, rOldSet,
                                      m_xBtnGrid->get_active(),
                                      m_xBtnGrid->get_saved_state() != 
TRISTATE_FALSE );
 
-    bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_HEADERS),
+    bDataChanged |= lcl_PutBoolItem( SID_SCATTR_PAGE_HEADERS,
                                      *rCoreSet, rOldSet,
                                      m_xBtnHeaders->get_active(),
                                      m_xBtnHeaders->get_saved_state() != 
TRISTATE_FALSE );
 
-    bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_TOPDOWN),
+    bDataChanged |= lcl_PutBoolItem( SID_SCATTR_PAGE_TOPDOWN,
                                      *rCoreSet, rOldSet,
                                      m_xBtnTopDown->get_active(),
                                      m_xBtnTopDown->get_saved_state() != 
TRISTATE_FALSE );
 
-    bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_FORMULAS),
+    bDataChanged |= lcl_PutBoolItem( SID_SCATTR_PAGE_FORMULAS,
                                      *rCoreSet, rOldSet,
                                      m_xBtnFormulas->get_active(),
                                      m_xBtnFormulas->get_saved_state() != 
TRISTATE_FALSE );
 
-    bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_NULLVALS),
+    bDataChanged |= lcl_PutBoolItem( SID_SCATTR_PAGE_NULLVALS,
                                      *rCoreSet, rOldSet,
                                      m_xBtnNullVals->get_active(),
                                      m_xBtnNullVals->get_saved_state() != 
TRISTATE_FALSE );
@@ -303,13 +298,13 @@ bool ScTablePage::FillItemSet( SfxItemSet* rCoreSet )
     }
 
     // object representation:
-    bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_CHARTS),
+    bDataChanged |= lcl_PutVObjModeItem( SID_SCATTR_PAGE_CHARTS,
                                          *rCoreSet, rOldSet, *m_xBtnCharts );
 
-    bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_OBJECTS),
+    bDataChanged |= lcl_PutVObjModeItem( SID_SCATTR_PAGE_OBJECTS,
                                          *rCoreSet, rOldSet, *m_xBtnObjects );
 
-    bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_DRAWINGS),
+    bDataChanged |= lcl_PutVObjModeItem( SID_SCATTR_PAGE_DRAWINGS,
                                          *rCoreSet, rOldSet, *m_xBtnDrawings );
 
     // scaling:
@@ -319,18 +314,18 @@ bool ScTablePage::FillItemSet( SfxItemSet* rCoreSet )
         m_xEdScaleAll->set_value(100, FieldUnit::PERCENT);
     }
 
-    bDataChanged |= lcl_PutScaleItem( GetWhich(SID_SCATTR_PAGE_SCALE),
+    bDataChanged |= lcl_PutScaleItem( SID_SCATTR_PAGE_SCALE,
                                       *rCoreSet, rOldSet,
                                       *m_xLbScaleMode, 
SC_TPTABLE_SCALE_PERCENT,
                                       *m_xEdScaleAll, 
static_cast<sal_uInt16>(m_xEdScaleAll->get_value(FieldUnit::PERCENT)) );
 
-    bDataChanged |= lcl_PutScaleItem2( GetWhich(SID_SCATTR_PAGE_SCALETO),
+    bDataChanged |= lcl_PutScaleItem2( SID_SCATTR_PAGE_SCALETO,
                                       *rCoreSet, rOldSet,
                                       *m_xLbScaleMode, SC_TPTABLE_SCALE_TO,
                                       *m_xEdScalePageWidth, 
m_nOrigScalePageWidth,
                                       *m_xEdScalePageHeight, 
m_nOrigScalePageHeight );
 
-    bDataChanged |= lcl_PutScaleItem3( GetWhich(SID_SCATTR_PAGE_SCALETOPAGES),
+    bDataChanged |= lcl_PutScaleItem3( SID_SCATTR_PAGE_SCALETOPAGES,
                                       *rCoreSet, rOldSet,
                                       *m_xLbScaleMode, 
SC_TPTABLE_SCALE_TO_PAGES,
                                       *m_xEdScalePageNum, 
static_cast<sal_uInt16>(m_xEdScalePageNum->get_value()) );
@@ -414,7 +409,7 @@ IMPL_LINK(ScTablePage, ToggleHdl, weld::Toggleable&, rBox, 
void)
 
 // Helper functions for FillItemSet:
 
-static bool lcl_PutBoolItem( sal_uInt16            nWhich,
+static bool lcl_PutBoolItem( TypedWhichId<SfxBoolItem>  nWhich,
                      SfxItemSet&        rCoreSet,
                      const SfxItemSet&  rOldSet,
                      bool               bIsChecked,
@@ -431,7 +426,7 @@ static bool lcl_PutBoolItem( sal_uInt16            nWhich,
     return bDataChanged;
 }
 
-static bool lcl_PutVObjModeItem( sal_uInt16            nWhich,
+static bool lcl_PutVObjModeItem( TypedWhichId<ScViewObjectModeItem>  nWhich,
                          SfxItemSet&        rCoreSet,
                          const SfxItemSet&  rOldSet,
                          const weld::Toggleable&    rBtn )
@@ -450,7 +445,7 @@ static bool lcl_PutVObjModeItem( sal_uInt16            
nWhich,
     return bDataChanged;
 }
 
-static bool lcl_PutScaleItem( sal_uInt16    nWhich,
+static bool lcl_PutScaleItem( TypedWhichId<SfxUInt16Item> nWhich,
                       SfxItemSet&           rCoreSet,
                       const SfxItemSet&     rOldSet,
                       const weld::ComboBox& rListBox,
@@ -471,7 +466,7 @@ static bool lcl_PutScaleItem( sal_uInt16    nWhich,
     return bDataChanged;
 }
 
-static bool lcl_PutScaleItem2( sal_uInt16               nWhich,
+static bool lcl_PutScaleItem2( TypedWhichId<ScPageScaleToItem> nWhich,
                       SfxItemSet&           rCoreSet,
                       const SfxItemSet&     rOldSet,
                       const weld::ComboBox& rListBox,
@@ -502,7 +497,7 @@ static bool lcl_PutScaleItem2( sal_uInt16               
nWhich,
     return bDataChanged;
 }
 
-static bool lcl_PutScaleItem3( sal_uInt16    nWhich,
+static bool lcl_PutScaleItem3( TypedWhichId<SfxUInt16Item> nWhich,
                       SfxItemSet&           rCoreSet,
                       const SfxItemSet&     rOldSet,
                       const weld::ComboBox& rListBox,
diff --git a/svl/qa/unit/items/stylepool.cxx b/svl/qa/unit/items/stylepool.cxx
index 01f0d8867b48..94ff91aea73c 100644
--- a/svl/qa/unit/items/stylepool.cxx
+++ b/svl/qa/unit/items/stylepool.cxx
@@ -26,7 +26,7 @@ CPPUNIT_TEST_FIXTURE(StylePoolTest, testIterationOrder)
     // Set up a style pool with multiple parents.
     SfxStringItem aDefault1(1);
     std::vector<SfxPoolItem*> aDefaults{ &aDefault1 };
-    SfxItemInfo const aItems[] = { { 1, false } };
+    SfxItemInfo const aItems[] = { { 2, false } };
 
     rtl::Reference<SfxItemPool> pPool = new SfxItemPool("test", 1, 1, aItems);
     pPool->SetDefaults(&aDefaults);
diff --git a/svl/qa/unit/items/test_itempool.cxx 
b/svl/qa/unit/items/test_itempool.cxx
index 4d15edaffd86..6868999f0f76 100644
--- a/svl/qa/unit/items/test_itempool.cxx
+++ b/svl/qa/unit/items/test_itempool.cxx
@@ -34,10 +34,10 @@ class PoolItemTest : public CppUnit::TestFixture
 void PoolItemTest::testPool()
 {
     SfxItemInfo const aItems[] =
-        { { 1, true },
-          { 2, false /* not poolable */ },
-          { 3, false },
-          { 4, false /* not poolable */}
+        { { 4, true },
+          { 3, false /* not poolable */ },
+          { 2, false },
+          { 1, false /* not poolable */}
         };
 
     rtl::Reference<SfxItemPool> pPool = new SfxItemPool("testpool", 1, 4, 
aItems);
diff --git a/svl/source/items/itempool.cxx b/svl/source/items/itempool.cxx
index fe13cfb96a32..8d4aa074e4f5 100644
--- a/svl/source/items/itempool.cxx
+++ b/svl/source/items/itempool.cxx
@@ -167,6 +167,24 @@ SfxItemPool::SfxItemPool
 
     if ( pDefaults )
         SetDefaults(pDefaults);
+
+#ifdef DBG_UTIL
+    if (pItemInfos)
+    {
+        auto p = pItemInfos;
+        auto nWhich = nStartWhich;
+        while (nWhich <= nEndWhich)
+        {
+            if (p->_nSID == nWhich)
+            {
+                SAL_WARN("svl.items", "No point mapping a SID to itself, just 
put a 0 here in the SfxItemInfo array, at index " << (p - pItemInfos));
+                assert(false);
+            }
+            ++p;
+            ++nWhich;
+        }
+    }
+#endif
 }
 
 

Reply via email to