chart2/source/controller/dialogs/tp_TitleRotation.cxx |    8 -
 cui/source/customize/SvxToolbarConfigPage.cxx         |    6 -
 cui/source/customize/cfg.cxx                          |    4 
 cui/source/dialogs/srchxtra.cxx                       |    3 
 cui/source/options/optlingu.cxx                       |    5 -
 cui/source/tabpages/chardlg.cxx                       |    7 -
 cui/source/tabpages/numpages.cxx                      |    3 
 cui/source/tabpages/page.cxx                          |   65 ++++++---------
 dbaccess/source/ui/misc/UITools.cxx                   |    3 
 desktop/source/lib/init.cxx                           |    6 -
 include/editeng/editids.hrc                           |    3 
 sc/qa/extras/macros-test.cxx                          |    9 --
 sc/qa/unit/cond_format.cxx                            |    3 
 sc/qa/unit/copy_paste_test.cxx                        |    6 -
 sc/qa/unit/pivottable_filters_test.cxx                |   36 ++------
 sc/qa/unit/subsequent_export_test4.cxx                |    9 --
 sc/qa/unit/subsequent_filters_test2.cxx               |   24 +----
 sc/qa/unit/subsequent_filters_test4.cxx               |    6 -
 sc/source/core/data/colorscale.cxx                    |    4 
 sc/source/filter/excel/xehelper.cxx                   |    3 
 sc/source/filter/excel/xistyle.cxx                    |    3 
 sc/source/filter/excel/xlchart.cxx                    |    6 -
 sc/source/ui/attrdlg/attrdlg.cxx                      |    4 
 sc/source/ui/drawfunc/drtxtob.cxx                     |    3 
 sc/source/ui/miscdlgs/textdlgs.cxx                    |    3 
 sc/source/ui/styleui/styledlg.cxx                     |   12 +-
 sc/source/ui/unoobj/afmtuno.cxx                       |    4 
 sc/source/ui/unoobj/docuno.cxx                        |    3 
 sc/source/ui/view/editsh.cxx                          |    3 
 sd/source/ui/animations/CustomAnimationDialog.cxx     |    4 
 sd/source/ui/dlg/dlgchar.cxx                          |    2 
 sd/source/ui/dlg/prltempl.cxx                         |    2 
 sd/source/ui/dlg/tabtempl.cxx                         |    3 
 sd/source/ui/view/drtxtob1.cxx                        |    2 
 sd/source/ui/view/drviews2.cxx                        |    2 
 sfx2/source/appl/module.cxx                           |    4 
 svx/source/dialog/hdft.cxx                            |   40 ++-------
 svx/source/dialog/srchdlg.cxx                         |    5 -
 svx/source/form/fmtextcontrolshell.cxx                |    2 
 svx/source/sidebar/nbdtmg.cxx                         |    2 
 svx/source/styles/CommonStylePreviewRenderer.cxx      |   78 ++++++++----------
 svx/source/svdraw/svdedtv1.cxx                        |   24 ++---
 svx/source/tbxctrls/StylesPreviewWindow.cxx           |   70 ++++++----------
 svx/source/tbxctrls/colrctrl.cxx                      |    5 -
 svx/source/tbxctrls/linectrl.cxx                      |    5 -
 svx/source/tbxctrls/tbcontrl.cxx                      |   60 +++++--------
 sw/inc/coreframestyle.hxx                             |    5 +
 sw/source/core/text/pormulti.cxx                      |   14 ---
 sw/source/core/unocore/unocrsrhelper.cxx              |    4 
 sw/source/core/unocore/unoevent.cxx                   |    6 -
 sw/source/core/unocore/unosett.cxx                    |    3 
 sw/source/core/unocore/unostyle.cxx                   |    2 
 sw/source/filter/html/htmlcss1.cxx                    |    3 
 sw/source/filter/html/swhtml.cxx                      |    3 
 sw/source/filter/ww8/docxattributeoutput.cxx          |    5 -
 sw/source/filter/ww8/writerwordglue.cxx               |    4 
 sw/source/filter/ww8/wrtw8nds.cxx                     |   20 +---
 sw/source/filter/ww8/wrtww8.hxx                       |    6 +
 sw/source/ui/chrdlg/chardlg.cxx                       |    3 
 sw/source/ui/fmtui/tmpdlg.cxx                         |    3 
 sw/source/ui/misc/pgfnote.cxx                         |    4 
 sw/source/uibase/dialog/watermarkdialog.cxx           |    4 
 sw/source/uibase/docvw/srcedtw.cxx                    |    2 
 sw/source/uibase/shells/annotsh.cxx                   |    3 
 sw/source/uibase/shells/drwtxtex.cxx                  |    3 
 65 files changed, 270 insertions(+), 391 deletions(-)

New commits:
commit 9da54fbc26cfbeff2ee4829c1197605dbd165b3c
Author:     Noel Grandin <[email protected]>
AuthorDate: Thu Jan 8 16:15:36 2026 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Sat Jan 10 12:15:45 2026 +0100

    use more TypedWhichId to avoid casting
    
    Change-Id: I98eb7ce26161ec39ef8f8bd9a08315d58d32d0e5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196850
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/chart2/source/controller/dialogs/tp_TitleRotation.cxx 
b/chart2/source/controller/dialogs/tp_TitleRotation.cxx
index 11a3795fb3cd..6a0e6b4d345f 100644
--- a/chart2/source/controller/dialogs/tp_TitleRotation.cxx
+++ b/chart2/source/controller/dialogs/tp_TitleRotation.cxx
@@ -102,13 +102,13 @@ bool SchAlignmentTabPage::FillItemSet(SfxItemSet* 
rOutAttrs)
 
 void SchAlignmentTabPage::Reset(const SfxItemSet* rInAttrs)
 {
-    const SfxPoolItem* pItem = GetItem( *rInAttrs, SCHATTR_TEXT_DEGREES );
+    const SdrAngleItem* pDegreesItem = GetItem( *rInAttrs, 
SCHATTR_TEXT_DEGREES );
 
-    Degree100 nDegrees = pItem ? static_cast<const 
SdrAngleItem*>(pItem)->GetValue() : 0_deg100;
+    Degree100 nDegrees = pDegreesItem ? pDegreesItem->GetValue() : 0_deg100;
     m_xCtrlDial->SetRotation( nDegrees );
 
-    pItem = GetItem( *rInAttrs, SCHATTR_TEXT_STACKED );
-    bool bStacked = pItem && static_cast<const 
SfxBoolItem*>(pItem)->GetValue();
+    const SfxBoolItem* pItem = GetItem( *rInAttrs, SCHATTR_TEXT_STACKED );
+    bool bStacked = pItem && pItem->GetValue();
     m_xCbStacked->set_active(bStacked);
     StackedToggleHdl(*m_xCbStacked);
 
diff --git a/cui/source/customize/SvxToolbarConfigPage.cxx 
b/cui/source/customize/SvxToolbarConfigPage.cxx
index 1c98699c35ab..c7dc7cbf6931 100644
--- a/cui/source/customize/SvxToolbarConfigPage.cxx
+++ b/cui/source/customize/SvxToolbarConfigPage.cxx
@@ -108,11 +108,9 @@ 
SvxToolbarConfigPage::SvxToolbarConfigPage(weld::Container* pPage,
     // has been passed in
     m_aURLToSelect = GetDefaultToolbar();
 
-    const SfxPoolItem* pItem = rSet.GetItem(SID_CONFIG);
-
-    if (pItem)
+    if (const SfxStringItem* pItem = rSet.GetItem(SID_CONFIG))
     {
-        OUString text = static_cast<const SfxStringItem*>(pItem)->GetValue();
+        OUString text = pItem->GetValue();
         if (text.startsWith(ITEM_TOOLBAR_URL))
         {
             m_aURLToSelect = text.copy(0);
diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index e4f015767413..1f7cc1308347 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -225,9 +225,9 @@ SvxConfigDialog::SvxConfigDialog(weld::Window * pParent, 
const SfxItemSet* pInSe
     AddTabPage(u"events"_ustr, TabResId(RID_TAB_EVENTS.aLabel), 
CreateSvxEventConfigPage,
                RID_L + RID_TAB_EVENTS.sIconName);
 
-    if (const SfxPoolItem* pItem = pInSet->GetItem(SID_CONFIG))
+    if (const SfxStringItem* pItem = pInSet->GetItem(SID_CONFIG))
     {
-        OUString text = static_cast<const SfxStringItem*>(pItem)->GetValue();
+        OUString text = pItem->GetValue();
         if (text.startsWith( ITEM_TOOLBAR_URL ) )
             SetCurPageId(u"toolbars"_ustr);
         else if (text.startsWith( ITEM_EVENT_URL) )
diff --git a/cui/source/options/optlingu.cxx b/cui/source/options/optlingu.cxx
index 4c9a3ed6faa9..1c41d756dad7 100644
--- a/cui/source/options/optlingu.cxx
+++ b/cui/source/options/optlingu.cxx
@@ -1143,9 +1143,8 @@ void SvxLinguTabPage::Reset( const SfxItemSet* rSet )
     int nEntry = 0;
 
     aLngCfg.GetProperty( UPN_IS_SPELL_AUTO ) >>= bVal;
-    const SfxPoolItem* pItem = GetItem( *rSet, SID_AUTOSPELL_CHECK );
-    if (pItem)
-        bVal = static_cast<const SfxBoolItem *>(pItem)->GetValue();
+    if (const SfxBoolItem* pItem = GetItem( *rSet, SID_AUTOSPELL_CHECK ))
+        bVal = pItem->GetValue();
     nUserData = OptionsUserData( EID_SPELL_AUTO, false, 0, true, 
bVal).GetUserData();
     m_xLinguOptionsCLB->set_toggle(nEntry, bVal ? TRISTATE_TRUE : 
TRISTATE_FALSE);
     m_xLinguOptionsCLB->set_text(nEntry, sSpellAuto, 0);
diff --git a/cui/source/tabpages/page.cxx b/cui/source/tabpages/page.cxx
index 4403bac2042f..bda85c9570a0 100644
--- a/cui/source/tabpages/page.cxx
+++ b/cui/source/tabpages/page.cxx
@@ -336,32 +336,26 @@ void SvxPageDescPage::Reset( const SfxItemSet* rSet )
     MapUnit eUnit = pPool->GetMetric( GetWhich( SID_ATTR_LRSPACE ) );
 
     // adjust margins (right/left)
-    const SfxPoolItem* pItem = GetItem( *rSet, SID_ATTR_LRSPACE );
-
-    if ( pItem )
+    if (const SvxLRSpaceItem* pLRSpace = GetItem( *rSet, SID_ATTR_LRSPACE ))
     {
-        const SvxLRSpaceItem& rLRSpace = static_cast<const 
SvxLRSpaceItem&>(*pItem);
-        SetMetricValue(*m_xLeftMarginEdit, rLRSpace.ResolveLeft({}), eUnit);
-        SetMetricValue(*m_xGutterMarginEdit, rLRSpace.GetGutterMargin(), 
eUnit);
+        SetMetricValue(*m_xLeftMarginEdit, pLRSpace->ResolveLeft({}), eUnit);
+        SetMetricValue(*m_xGutterMarginEdit, pLRSpace->GetGutterMargin(), 
eUnit);
         m_aBspWin.SetLeft(
-            static_cast<sal_uInt16>(ConvertLong_Impl(rLRSpace.ResolveLeft({}), 
eUnit)));
-        SetMetricValue(*m_xRightMarginEdit, rLRSpace.ResolveRight({}), eUnit);
+            
static_cast<sal_uInt16>(ConvertLong_Impl(pLRSpace->ResolveLeft({}), eUnit)));
+        SetMetricValue(*m_xRightMarginEdit, pLRSpace->ResolveRight({}), eUnit);
         m_aBspWin.SetRight(
-            
static_cast<sal_uInt16>(ConvertLong_Impl(rLRSpace.ResolveRight({}), eUnit)));
+            
static_cast<sal_uInt16>(ConvertLong_Impl(pLRSpace->ResolveRight({}), eUnit)));
     }
 
     // adjust margins (top/bottom)
-    pItem = GetItem( *rSet, SID_ATTR_ULSPACE );
-
-    if ( pItem )
+    if (const SvxULSpaceItem* pULSpace = GetItem( *rSet, SID_ATTR_ULSPACE ))
     {
-        const SvxULSpaceItem& rULSpace = static_cast<const 
SvxULSpaceItem&>(*pItem);
-        SetMetricValue( *m_xTopMarginEdit, rULSpace.GetUpper(), eUnit );
+        SetMetricValue( *m_xTopMarginEdit, pULSpace->GetUpper(), eUnit );
         m_aBspWin.SetTop(
-            static_cast<sal_uInt16>(ConvertLong_Impl( 
static_cast<tools::Long>(rULSpace.GetUpper()), eUnit )) );
-        SetMetricValue( *m_xBottomMarginEdit, rULSpace.GetLower(), eUnit );
+            static_cast<sal_uInt16>(ConvertLong_Impl( 
static_cast<tools::Long>(pULSpace->GetUpper()), eUnit )) );
+        SetMetricValue( *m_xBottomMarginEdit, pULSpace->GetLower(), eUnit );
         m_aBspWin.SetBottom(
-            static_cast<sal_uInt16>(ConvertLong_Impl( 
static_cast<tools::Long>(rULSpace.GetLower()), eUnit )) );
+            static_cast<sal_uInt16>(ConvertLong_Impl( 
static_cast<tools::Long>(pULSpace->GetLower()), eUnit )) );
     }
 
     if (const SfxGrabBagItem* pGragbagItem = 
rSet->GetItemIfSet(SID_ATTR_CHAR_GRABBAG))
@@ -410,14 +404,11 @@ void SvxPageDescPage::Reset( const SfxItemSet* rSet )
     SvxNumType eNumType = SVX_NUM_ARABIC;
     bLandscape = ( mpDefPrinter->GetOrientation() == Orientation::Landscape );
     SvxPageUsage nUse = SvxPageUsage::All;
-    pItem = GetItem( *rSet, SID_ATTR_PAGE );
-
-    if ( pItem )
+    if (const SvxPageItem* pItem = GetItem( *rSet, SID_ATTR_PAGE ))
     {
-        const SvxPageItem& rItem = static_cast<const SvxPageItem&>(*pItem);
-        eNumType = rItem.GetNumType();
-        nUse = rItem.GetPageUsage();
-        bLandscape = rItem.IsLandscape();
+        eNumType = pItem->GetNumType();
+        nUse = pItem->GetPageUsage();
+        bLandscape = pItem->IsLandscape();
     }
 
     // alignment
@@ -430,11 +421,9 @@ void SvxPageDescPage::Reset( const SfxItemSet* rSet )
 
     m_xPaperTrayBox->clear();
     sal_uInt8 nPaperBin = PAPERBIN_PRINTER_SETTINGS;
-    pItem = GetItem( *rSet, SID_ATTR_PAGE_PAPERBIN );
-
-    if ( pItem )
+    if (const SvxPaperBinItem* pItem = GetItem( *rSet, SID_ATTR_PAGE_PAPERBIN 
))
     {
-        nPaperBin = static_cast<const SvxPaperBinItem*>(pItem)->GetValue();
+        nPaperBin = pItem->GetValue();
 
         if ( nPaperBin >= mpDefPrinter->GetPaperBinCount() )
             nPaperBin = PAPERBIN_PRINTER_SETTINGS;
@@ -455,10 +444,8 @@ void SvxPageDescPage::Reset( const SfxItemSet* rSet )
     m_xPaperTrayBox->connect_focus_in(LINK(this, SvxPageDescPage, 
PaperBinHdl_Impl));
 
     Size aPaperSize = SvxPaperInfo::GetPaperSize( mpDefPrinter );
-    pItem = GetItem( *rSet, SID_ATTR_PAGE_SIZE );
-
-    if ( pItem )
-        aPaperSize = static_cast<const SvxSizeItem*>(pItem)->GetSize();
+    if (const SvxSizeItem* pItem = GetItem( *rSet, SID_ATTR_PAGE_SIZE ))
+        aPaperSize = pItem->GetSize();
 
     bool bOrientationSupport =
         mpDefPrinter->HasSupport( PrinterSupport::SetOrientation );
@@ -514,7 +501,7 @@ void SvxPageDescPage::Reset( const SfxItemSet* rSet )
             DisableVerticalPageDir();
 
             // horizontal alignment
-            pItem = GetItem( *rSet, SID_ATTR_PAGE_EXT1 );
+            const SfxPoolItem* pItem = GetItem( *rSet, SID_ATTR_PAGE_EXT1 );
             m_xHorzBox->set_active(pItem && static_cast<const 
SfxBoolItem*>(pItem)->GetValue());
 
             // vertical alignment
@@ -538,7 +525,7 @@ void SvxPageDescPage::Reset( const SfxItemSet* rSet )
         {
             DisableVerticalPageDir();
             m_xAdaptBox->show();
-            pItem = GetItem( *rSet, SID_ATTR_PAGE_EXT1 );
+            const SfxPoolItem* pItem = GetItem( *rSet, SID_ATTR_PAGE_EXT1 );
             m_xAdaptBox->set_active( pItem &&
                 static_cast<const SfxBoolItem*>(pItem)->GetValue() );
 
@@ -605,12 +592,13 @@ void SvxPageDescPage::Reset( const SfxItemSet* rSet )
         m_xRegisterLB->save_value();
     }
 
+    const SvxFrameDirectionItem* pItem = nullptr;
     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()
+                                ? pItem->GetValue()
                                 : SvxFrameDirection::Horizontal_LR_TB;
         m_xTextFlowBox->set_active_id(nVal);
 
@@ -1250,10 +1238,9 @@ void SvxPageDescPage::ResetBackground_Impl(const 
SfxItemSet& rSet)
 void SvxPageDescPage::InitHeadFoot_Impl( const SfxItemSet& rSet )
 {
     bLandscape = m_xLandscapeBtn->get_active();
-    const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE );
 
-    if ( pItem )
-        m_aBspWin.SetSize( static_cast<const SvxSizeItem*>(pItem)->GetSize() );
+    if (const SvxSizeItem* pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE ))
+        m_aBspWin.SetSize( pItem->GetSize() );
 
     const SvxSetItem* pSetItem = nullptr;
 
@@ -1261,7 +1248,7 @@ void SvxPageDescPage::InitHeadFoot_Impl( const 
SfxItemSet& rSet )
 
     if ( SfxItemState::SET ==
          rSet.GetItemState( GetWhich( SID_ATTR_PAGE_HEADERSET ),
-                            false, reinterpret_cast<const 
SfxPoolItem**>(&pSetItem) ) )
+                            false, &pSetItem ) )
     {
         const SfxItemSet& rHeaderSet = pSetItem->GetItemSet();
         const SfxBoolItem& rHeaderOn =
diff --git a/dbaccess/source/ui/misc/UITools.cxx 
b/dbaccess/source/ui/misc/UITools.cxx
index 5449ef24ed03..1261ca4f9d38 100644
--- a/dbaccess/source/ui/misc/UITools.cxx
+++ b/dbaccess/source/ui/misc/UITools.cxx
@@ -856,8 +856,7 @@ bool callColumnFormatDialog(weld::Widget* _pParent,
         const SfxItemSet* pResult = aDlg.GetOutputItemSet();
         if (pResult)
         {
-            const SfxPoolItem* pItem = pResult->GetItem( 
SID_ATTR_NUMBERFORMAT_INFO );
-            const SvxNumberInfoItem* pInfoItem = static_cast<const 
SvxNumberInfoItem*>(pItem);
+            const SvxNumberInfoItem* pInfoItem = pResult->GetItem( 
SID_ATTR_NUMBERFORMAT_INFO );
             if (pInfoItem)
             {
                 for (sal_uInt32 key : pInfoItem->GetDelFormats())
diff --git a/sc/qa/extras/macros-test.cxx b/sc/qa/extras/macros-test.cxx
index 7a3f514b659e..4eb2b2c90bb7 100644
--- a/sc/qa/extras/macros-test.cxx
+++ b/sc/qa/extras/macros-test.cxx
@@ -725,8 +725,7 @@ CPPUNIT_TEST_FIXTURE(ScMacrosTest, testTdf107572)
     for (SCCOL i = 0; i < 5; ++i)
     {
         const ScPatternAttr* pAttr = pDoc->GetPattern(i, 0, 0);
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-        const SvxBrushItem& rBackground = static_cast<const 
SvxBrushItem&>(rItem);
+        const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
         const Color& rColor = rBackground.GetColor();
 
         CPPUNIT_ASSERT_EQUAL(COL_BLUE, rColor);
@@ -735,15 +734,13 @@ CPPUNIT_TEST_FIXTURE(ScMacrosTest, testTdf107572)
     for (SCROW i = 1; i < 13; ++i)
     {
         const ScPatternAttr* pAttr = pDoc->GetPattern(0, i, 0);
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-        const SvxBrushItem& rBackground = static_cast<const 
SvxBrushItem&>(rItem);
+        const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
         const Color& rColor = rBackground.GetColor();
 
         CPPUNIT_ASSERT_EQUAL(Color(0x4d, 0x4d, 0x4d), rColor);
 
         const ScPatternAttr* pAttr2 = pDoc->GetPattern(5, i, 0);
-        const SfxPoolItem& rItem2 = pAttr2->GetItem(ATTR_BACKGROUND);
-        const SvxBrushItem& rBackground2 = static_cast<const 
SvxBrushItem&>(rItem2);
+        const SvxBrushItem& rBackground2 = pAttr2->GetItem(ATTR_BACKGROUND);
         const Color& rColor2 = rBackground2.GetColor();
 
         CPPUNIT_ASSERT_EQUAL(COL_GRAY3, rColor2);
diff --git a/sc/qa/unit/cond_format.cxx b/sc/qa/unit/cond_format.cxx
index 031388fe2074..74724df151d0 100644
--- a/sc/qa/unit/cond_format.cxx
+++ b/sc/qa/unit/cond_format.cxx
@@ -554,8 +554,7 @@ CPPUNIT_TEST_FIXTURE(CondFormatTest, 
testCondFormatParentXLSX)
     ScDocument* pDoc = getScDoc();
     const SfxItemSet* pCondSet = pDoc->GetCondResult(2, 5, 0);
     const ScPatternAttr* pPattern = pDoc->GetPattern(2, 5, 0);
-    const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_VER_JUSTIFY, 
pCondSet);
-    const SvxVerJustifyItem& rVerJustify = static_cast<const 
SvxVerJustifyItem&>(rPoolItem);
+    const SvxVerJustifyItem& rVerJustify = pPattern->GetItem(ATTR_VER_JUSTIFY, 
pCondSet);
     CPPUNIT_ASSERT_EQUAL(SvxCellVerJustify::Top, rVerJustify.GetValue());
 }
 
diff --git a/sc/qa/unit/copy_paste_test.cxx b/sc/qa/unit/copy_paste_test.cxx
index ce12d0b88aa7..10ed9786889b 100644
--- a/sc/qa/unit/copy_paste_test.cxx
+++ b/sc/qa/unit/copy_paste_test.cxx
@@ -274,15 +274,13 @@ void ScCopyPasteTest::testTdf107394()
 
 static ScMF lcl_getMergeFlagOfCell(const ScDocument& rDoc, SCCOL nCol, SCROW 
nRow, SCTAB nTab)
 {
-    const SfxPoolItem& rPoolItem = rDoc.GetPattern(nCol, nRow, 
nTab)->GetItem(ATTR_MERGE_FLAG);
-    const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+    const ScMergeFlagAttr& rMergeFlag = rDoc.GetPattern(nCol, nRow, 
nTab)->GetItem(ATTR_MERGE_FLAG);
     return rMergeFlag.GetValue();
 }
 
 static ScAddress lcl_getMergeSizeOfCell(const ScDocument& rDoc, SCCOL nCol, 
SCROW nRow, SCTAB nTab)
 {
-    const SfxPoolItem& rPoolItem = rDoc.GetPattern(nCol, nRow, 
nTab)->GetItem(ATTR_MERGE);
-    const ScMergeAttr& rMerge = static_cast<const ScMergeAttr&>(rPoolItem);
+    const ScMergeAttr& rMerge = rDoc.GetPattern(nCol, nRow, 
nTab)->GetItem(ATTR_MERGE);
     return ScAddress(rMerge.GetColMerge(), rMerge.GetRowMerge(), nTab);
 }
 
diff --git a/sc/qa/unit/pivottable_filters_test.cxx 
b/sc/qa/unit/pivottable_filters_test.cxx
index e358166e2fc5..10109452dc3a 100644
--- a/sc/qa/unit/pivottable_filters_test.cxx
+++ b/sc/qa/unit/pivottable_filters_test.cxx
@@ -487,16 +487,14 @@ CPPUNIT_TEST_FIXTURE(ScPivotTableFiltersTest, 
testPivotTableNoColumnsLayout)
     // Check first pivot table's popup button (headerlayout flag)
     {
         const ScPatternAttr* pPattern = pDoc->GetPattern(0, 1, 1);
-        const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-        const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+        const ScMergeFlagAttr& rMergeFlag = pPattern->GetItem(ATTR_MERGE_FLAG);
         CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
     }
 
     // Check second pivot table's popup button
     {
         const ScPatternAttr* pPattern = pDoc->GetPattern(3, 0, 1);
-        const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-        const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+        const ScMergeFlagAttr& rMergeFlag = pPattern->GetItem(ATTR_MERGE_FLAG);
         CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
     }
 }
@@ -518,22 +516,19 @@ CPPUNIT_TEST_FIXTURE(ScPivotTableFiltersTest, 
testTdf112501)
         // Row button
         {
             const ScPatternAttr* pPattern = pDoc->GetPattern(0, 3, 0);
-            const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-            const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+            const ScMergeFlagAttr& rMergeFlag = 
pPattern->GetItem(ATTR_MERGE_FLAG);
             CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
         }
         // Column button
         {
             const ScPatternAttr* pPattern = pDoc->GetPattern(1, 2, 0);
-            const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-            const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+            const ScMergeFlagAttr& rMergeFlag = 
pPattern->GetItem(ATTR_MERGE_FLAG);
             CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
         }
         // Check also C3 to make sure column button is not placed there
         {
             const ScPatternAttr* pPattern = pDoc->GetPattern(2, 2, 0);
-            const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-            const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+            const ScMergeFlagAttr& rMergeFlag = 
pPattern->GetItem(ATTR_MERGE_FLAG);
             CPPUNIT_ASSERT(!(rMergeFlag.GetValue() & ScMF::ButtonPopup));
         }
     }
@@ -546,21 +541,18 @@ CPPUNIT_TEST_FIXTURE(ScPivotTableFiltersTest, 
testTdf112501)
         // Two row buttons
         {
             const ScPatternAttr* pPattern = pDoc->GetPattern(7, 3, 0);
-            const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-            const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+            const ScMergeFlagAttr& rMergeFlag = 
pPattern->GetItem(ATTR_MERGE_FLAG);
             CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
         }
         {
             const ScPatternAttr* pPattern = pDoc->GetPattern(8, 3, 0);
-            const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-            const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+            const ScMergeFlagAttr& rMergeFlag = 
pPattern->GetItem(ATTR_MERGE_FLAG);
             CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
         }
         // Column button
         {
             const ScPatternAttr* pPattern = pDoc->GetPattern(9, 2, 0);
-            const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-            const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+            const ScMergeFlagAttr& rMergeFlag = 
pPattern->GetItem(ATTR_MERGE_FLAG);
             CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
         }
     }
@@ -1178,8 +1170,7 @@ CPPUNIT_TEST_FIXTURE(ScPivotTableFiltersTest, 
testPivotTableRowHeaderXLS)
         CPPUNIT_ASSERT(pDPObj->GetHeaderLayout());
         // Check whether the row header has the right popupbutton flag
         const ScPatternAttr* pPattern = pDoc->GetPattern(3, 3, 0);
-        const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-        const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+        const ScMergeFlagAttr& rMergeFlag = pPattern->GetItem(ATTR_MERGE_FLAG);
         CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
     }
 
@@ -1190,8 +1181,7 @@ CPPUNIT_TEST_FIXTURE(ScPivotTableFiltersTest, 
testPivotTableRowHeaderXLS)
         CPPUNIT_ASSERT(!pDPObj->GetHeaderLayout());
         // Check whether the row header has the right popupbutton flag
         const ScPatternAttr* pPattern = pDoc->GetPattern(0, 2, 0);
-        const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-        const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+        const ScMergeFlagAttr& rMergeFlag = pPattern->GetItem(ATTR_MERGE_FLAG);
         CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
     }
 
@@ -1210,8 +1200,7 @@ CPPUNIT_TEST_FIXTURE(ScPivotTableFiltersTest, 
testPivotTableRowHeaderXLS)
         CPPUNIT_ASSERT(pDPObj->GetHeaderLayout());
         // Check whether the row header has the right popupbutton flag
         const ScPatternAttr* pPattern = pDoc->GetPattern(3, 3, 0);
-        const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-        const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+        const ScMergeFlagAttr& rMergeFlag = pPattern->GetItem(ATTR_MERGE_FLAG);
         CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
     }
 
@@ -1222,8 +1211,7 @@ CPPUNIT_TEST_FIXTURE(ScPivotTableFiltersTest, 
testPivotTableRowHeaderXLS)
         CPPUNIT_ASSERT(!pDPObj->GetHeaderLayout());
         // Check whether the row header has the right popupbutton flag
         const ScPatternAttr* pPattern = pDoc->GetPattern(0, 2, 0);
-        const SfxPoolItem& rPoolItem = pPattern->GetItem(ATTR_MERGE_FLAG);
-        const ScMergeFlagAttr& rMergeFlag = static_cast<const 
ScMergeFlagAttr&>(rPoolItem);
+        const ScMergeFlagAttr& rMergeFlag = pPattern->GetItem(ATTR_MERGE_FLAG);
         CPPUNIT_ASSERT(rMergeFlag.GetValue() & ScMF::ButtonPopup);
     }
 }
diff --git a/sc/qa/unit/subsequent_export_test4.cxx 
b/sc/qa/unit/subsequent_export_test4.cxx
index 3be04f558a42..6457b4e01b88 100644
--- a/sc/qa/unit/subsequent_export_test4.cxx
+++ b/sc/qa/unit/subsequent_export_test4.cxx
@@ -598,8 +598,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testTdf123139XLSX)
     pAttr = pDoc->GetPattern(0, 1, 0); //A2
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_HOR_JUSTIFY);
-        const SvxHorJustifyItem& rJustify = static_cast<const 
SvxHorJustifyItem&>(rItem);
+        const SvxHorJustifyItem& rJustify = pAttr->GetItem(ATTR_HOR_JUSTIFY);
         CPPUNIT_ASSERT_EQUAL(SvxCellHorJustify::Center, rJustify.GetValue());
     }
 
@@ -612,8 +611,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testTdf123139XLSX)
     pAttr = pDoc->GetPattern(2, 0, 0); //C1
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_HOR_JUSTIFY);
-        const SvxHorJustifyItem& rJustify = static_cast<const 
SvxHorJustifyItem&>(rItem);
+        const SvxHorJustifyItem& rJustify = pAttr->GetItem(ATTR_HOR_JUSTIFY);
         CPPUNIT_ASSERT_EQUAL(SvxCellHorJustify::Standard, rJustify.GetValue());
     }
 
@@ -626,8 +624,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testTdf123139XLSX)
     pAttr = pDoc->GetPattern(2, 1, 0); //C2
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_HOR_JUSTIFY);
-        const SvxHorJustifyItem& rJustify = static_cast<const 
SvxHorJustifyItem&>(rItem);
+        const SvxHorJustifyItem& rJustify = pAttr->GetItem(ATTR_HOR_JUSTIFY);
         CPPUNIT_ASSERT_EQUAL(SvxCellHorJustify::Block, rJustify.GetValue());
     }
 
diff --git a/sc/qa/unit/subsequent_filters_test2.cxx 
b/sc/qa/unit/subsequent_filters_test2.cxx
index ca9a392c67f8..ee91dfa9526d 100644
--- a/sc/qa/unit/subsequent_filters_test2.cxx
+++ b/sc/qa/unit/subsequent_filters_test2.cxx
@@ -871,8 +871,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest2, testTdf130132)
     const ScPatternAttr* pAttr = pDoc->GetPattern(434, 0, 0);
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-        const SvxBrushItem& rBackground = static_cast<const 
SvxBrushItem&>(rItem);
+        const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
         const Color& rColor = rBackground.GetColor();
         // background colour is yellow
         CPPUNIT_ASSERT_EQUAL(COL_YELLOW, rColor);
@@ -887,8 +886,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest2, testTdf166445)
 
     const ScPatternAttr* pAttr = pDoc->GetPattern(0, 0, 0);
 
-    const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-    const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem);
+    const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
     const Color& rColor = rBackground.GetColor();
 
     // Without the fix in place, this test would have failed with
@@ -905,8 +903,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest2, testTdf165080)
 
     const ScPatternAttr* pAttr = pDoc->GetPattern(0, 0, 0);
 
-    const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-    const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem);
+    const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
     const Color& rColor = rBackground.GetColor();
 
     // Without the fix in place, this test would have failed with
@@ -923,8 +920,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest2, testTdf133327)
 
     const ScPatternAttr* pAttr = pDoc->GetPattern(250, 1, 0);
 
-    const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-    const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem);
+    const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
     const Color& rColor = rBackground.GetColor();
 
     // Without the fix in place, this test would have failed with
@@ -941,28 +937,24 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest2, testColumnStyle2XLSX)
     const ScPatternAttr* pAttr = pDoc->GetPattern(1, 1, 0);
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-        const SvxBrushItem& rBackground = static_cast<const 
SvxBrushItem&>(rItem);
+        const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
         const Color& rColor = rBackground.GetColor();
         CPPUNIT_ASSERT_EQUAL(Color(255, 51, 51), rColor);
     }
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_HOR_JUSTIFY);
-        const SvxHorJustifyItem& rJustify = static_cast<const 
SvxHorJustifyItem&>(rItem);
+        const SvxHorJustifyItem& rJustify = pAttr->GetItem(ATTR_HOR_JUSTIFY);
         CPPUNIT_ASSERT_EQUAL(SvxCellHorJustify::Center, rJustify.GetValue());
     }
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_FONT_HEIGHT);
-        const SvxFontHeightItem& rFontHeight = static_cast<const 
SvxFontHeightItem&>(rItem);
+        const SvxFontHeightItem& rFontHeight = 
pAttr->GetItem(ATTR_FONT_HEIGHT);
         sal_uInt16 nHeight = rFontHeight.GetHeight();
         CPPUNIT_ASSERT_EQUAL(sal_uInt16(240), nHeight);
     }
 
     {
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_FONT);
-        const SvxFontItem& rFont = static_cast<const SvxFontItem&>(rItem);
+        const SvxFontItem& rFont = pAttr->GetItem(ATTR_FONT);
         OUString aName = rFont.GetFamilyName();
         CPPUNIT_ASSERT_EQUAL(u"Linux Biolinum G"_ustr, aName);
     }
diff --git a/sc/qa/unit/subsequent_filters_test4.cxx 
b/sc/qa/unit/subsequent_filters_test4.cxx
index b1b170de2a0b..08c4f8c11d36 100644
--- a/sc/qa/unit/subsequent_filters_test4.cxx
+++ b/sc/qa/unit/subsequent_filters_test4.cxx
@@ -1701,16 +1701,14 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, 
testRowImportCellStyleIssue)
     // Check cell A6 - should have no background color set
     {
         const ScPatternAttr* pAttr = pDoc->GetPattern(0, 5, 0); // A6
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-        const SvxBrushItem& rBackground = static_cast<const 
SvxBrushItem&>(rItem);
+        const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
         CPPUNIT_ASSERT_EQUAL(false, rBackground.isUsed());
     }
 
     // Check cell A7 - should have light2 (background2) theme color set
     {
         const ScPatternAttr* pAttr = pDoc->GetPattern(0, 6, 0); // A7
-        const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
-        const SvxBrushItem& rBackground = static_cast<const 
SvxBrushItem&>(rItem);
+        const SvxBrushItem& rBackground = pAttr->GetItem(ATTR_BACKGROUND);
         CPPUNIT_ASSERT_EQUAL(true, rBackground.isUsed());
         CPPUNIT_ASSERT_EQUAL(Color(0xe7e6e6), rBackground.GetColor());
         auto const& rComplexColor = rBackground.getComplexColor();
diff --git a/sc/source/core/data/colorscale.cxx 
b/sc/source/core/data/colorscale.cxx
index e9c15efaa63f..1aee0abc3d61 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -1218,8 +1218,8 @@ std::unique_ptr<ScIconSetInfo> 
ScIconSetFormat::GetIconSetInfo(const ScAddress&
 
     std::unique_ptr<ScIconSetInfo> pInfo(new ScIconSetInfo);
 
-    const SfxPoolItem& rPoolItem = 
mrDoc.GetPattern(rAddr)->GetItem(ATTR_FONT_HEIGHT);
-    tools::Long aFontHeight = static_cast<const 
SvxFontHeightItem&>(rPoolItem).GetHeight();
+    const SvxFontHeightItem& rPoolItem = 
mrDoc.GetPattern(rAddr)->GetItem(ATTR_FONT_HEIGHT);
+    tools::Long aFontHeight = rPoolItem.GetHeight();
     pInfo->mnHeight = aFontHeight;
 
     if(mpFormatData->mbReverse)
diff --git a/sc/source/filter/excel/xlchart.cxx 
b/sc/source/filter/excel/xlchart.cxx
index 41b49f71be6e..5c92859a672b 100644
--- a/sc/source/filter/excel/xlchart.cxx
+++ b/sc/source/filter/excel/xlchart.cxx
@@ -997,7 +997,7 @@ void XclChPropSetHelper::WriteEscherProperties( 
ScfPropertySet& rPropSet,
     if( !rEscherFmt.mxItemSet )
         return;
 
-    const XFillStyleItem* pStyleItem = 
rEscherFmt.mxItemSet->GetItem<XFillStyleItem>( XATTR_FILLSTYLE, false );
+    const XFillStyleItem* pStyleItem = rEscherFmt.mxItemSet->GetItem( 
XATTR_FILLSTYLE, false );
     if( !pStyleItem )
         return;
 
@@ -1005,10 +1005,10 @@ void XclChPropSetHelper::WriteEscherProperties( 
ScfPropertySet& rPropSet,
     {
         case drawing::FillStyle_SOLID:
             // #i84812# Excel 2007 writes Escher properties for solid fill
-            if( const XFillColorItem* pColorItem = 
rEscherFmt.mxItemSet->GetItem<XFillColorItem>( XATTR_FILLCOLOR, false ) )
+            if( const XFillColorItem* pColorItem = 
rEscherFmt.mxItemSet->GetItem( XATTR_FILLCOLOR, false ) )
             {
                 // get solid transparence too
-                const XFillTransparenceItem* pTranspItem = 
rEscherFmt.mxItemSet->GetItem<XFillTransparenceItem>( XATTR_FILLTRANSPARENCE, 
false );
+                const XFillTransparenceItem* pTranspItem = 
rEscherFmt.mxItemSet->GetItem( XATTR_FILLTRANSPARENCE, false );
                 sal_uInt16 nTransp = pTranspItem ? pTranspItem->GetValue() : 0;
                 ScfPropSetHelper& rAreaHlp = GetAreaHelper( ePropMode );
                 rAreaHlp.InitializeWrite();
diff --git a/sc/source/ui/styleui/styledlg.cxx 
b/sc/source/ui/styleui/styledlg.cxx
index b0b5631192ad..56a58e1503c6 100644
--- a/sc/source/ui/styleui/styledlg.cxx
+++ b/sc/source/ui/styleui/styledlg.cxx
@@ -121,12 +121,12 @@ void ScStyleDlg::PageCreated(const OUString& rPageId, 
SfxTabPage& rTabPage)
         SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
         if (rPageId == "numbers")
         {
-            const SfxPoolItem* pInfoItem
+            const SvxNumberInfoItem* pInfoItem
                 = pDocSh->GetItem( SID_ATTR_NUMBERFORMAT_INFO );
 
             OSL_ENSURE( pInfoItem, "NumberInfoItem not found!" );
 
-            aSet.Put ( static_cast<const SvxNumberInfoItem&>(*pInfoItem) );
+            aSet.Put ( *pInfoItem );
             rTabPage.PageCreated(aSet);
         }
         else if (rPageId == "font")
diff --git a/sc/source/ui/unoobj/afmtuno.cxx b/sc/source/ui/unoobj/afmtuno.cxx
index 696fc32815c8..cae8c2339d52 100644
--- a/sc/source/ui/unoobj/afmtuno.cxx
+++ b/sc/source/ui/unoobj/afmtuno.cxx
@@ -693,10 +693,10 @@ uno::Any SAL_CALL ScAutoFormatFieldObj::getPropertyValue( 
const OUString& aPrope
                 case SC_WID_UNO_TBLBORD:
                 case SC_WID_UNO_TBLBORD2:
                     {
-                        const SfxPoolItem* pItem = pData->GetItem(nFieldIndex, 
ATTR_BORDER);
+                        const SvxBoxItem* pItem = pData->GetItem(nFieldIndex, 
ATTR_BORDER);
                         if (pItem)
                         {
-                            SvxBoxItem aOuter(*static_cast<const 
SvxBoxItem*>(pItem));
+                            SvxBoxItem aOuter(*pItem);
                             SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
 
                             if (pEntry->nWID == SC_WID_UNO_TBLBORD2)
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 4aba2cd121a8..93a4ce402a2a 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -1090,8 +1090,7 @@ static void lcl_sendLOKDocumentBackground(const 
ScViewData* pViewData)
 {
     ScDocShell* pDocSh = pViewData->GetDocShell();
     ScDocument& rDoc = pDocSh->GetDocument();
-    const SfxPoolItem& 
rItem(rDoc.getCellAttributeHelper().getDefaultCellAttribute().GetItem(ATTR_BACKGROUND));
-    const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem);
+    const SvxBrushItem& 
rBackground(rDoc.getCellAttributeHelper().getDefaultCellAttribute().GetItem(ATTR_BACKGROUND));
     const Color& rColor = rBackground.GetColor();
 
     ScTabViewShell* pViewShell = pViewData->GetViewShell();
diff --git a/sfx2/source/appl/module.cxx b/sfx2/source/appl/module.cxx
index f82255446cf9..ad6380b07f1f 100644
--- a/sfx2/source/appl/module.cxx
+++ b/sfx2/source/appl/module.cxx
@@ -260,9 +260,9 @@ FieldUnit SfxModule::GetFieldUnit() const
         return MeasurementSystem::Metric == eSystem ? FieldUnit::CM : 
FieldUnit::INCH;
     }
     FieldUnit eUnit = FieldUnit::INCH;
-    const SfxPoolItem* pItem = GetItem( SID_ATTR_METRIC );
+    const SfxUInt16Item* pItem = GetItem( SID_ATTR_METRIC );
     if ( pItem )
-        eUnit = static_cast<FieldUnit>(static_cast<const 
SfxUInt16Item*>(pItem)->GetValue());
+        eUnit = static_cast<FieldUnit>(pItem->GetValue());
     return eUnit;
 }
 
diff --git a/svx/source/dialog/hdft.cxx b/svx/source/dialog/hdft.cxx
index 17fa236996c6..b812b530262e 100644
--- a/svx/source/dialog/hdft.cxx
+++ b/svx/source/dialog/hdft.cxx
@@ -792,15 +792,11 @@ void SvxHFPage::ResetBackground_Impl( const SfxItemSet& 
rSet )
 
 void SvxHFPage::ActivatePage( const SfxItemSet& rSet )
 {
-    const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_LRSPACE );
-
-    if ( pItem )
+    if (const SvxLRSpaceItem* pItem = GetItem( rSet, SID_ATTR_LRSPACE ))
     {
         // Set left and right margins
-        const SvxLRSpaceItem& rLRSpace = static_cast<const 
SvxLRSpaceItem&>(*pItem);
-
-        m_aBspWin.SetLeft(rLRSpace.ResolveLeft({}));
-        m_aBspWin.SetRight(rLRSpace.ResolveRight({}));
+        m_aBspWin.SetLeft(pItem->ResolveLeft({}));
+        m_aBspWin.SetRight(pItem->ResolveRight({}));
     }
     else
     {
@@ -808,15 +804,11 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet )
         m_aBspWin.SetRight( 0 );
     }
 
-    pItem = GetItem( rSet, SID_ATTR_ULSPACE );
-
-    if ( pItem )
+    if (const SvxULSpaceItem* pItem = GetItem( rSet, SID_ATTR_ULSPACE ))
     {
         // Set top and bottom margins
-        const SvxULSpaceItem& rULSpace = static_cast<const 
SvxULSpaceItem&>(*pItem);
-
-        m_aBspWin.SetTop( rULSpace.GetUpper() );
-        m_aBspWin.SetBottom( rULSpace.GetLower() );
+        m_aBspWin.SetTop( pItem->GetUpper() );
+        m_aBspWin.SetBottom( pItem->GetLower() );
     }
     else
     {
@@ -825,10 +817,8 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet )
     }
 
     SvxPageUsage nUsage = SvxPageUsage::All;
-    pItem = GetItem( rSet, SID_ATTR_PAGE );
-
-    if ( pItem )
-        nUsage = static_cast<const SvxPageItem*>(pItem)->GetPageUsage();
+    if (const SvxPageItem* pItem = GetItem( rSet, SID_ATTR_PAGE ))
+        nUsage = pItem->GetPageUsage();
 
     m_aBspWin.SetUsage( nUsage );
 
@@ -839,14 +829,12 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet )
         m_xCntSharedBox->set_sensitive(true);
         m_xCntSharedFirstBox->set_sensitive(true);
     }
-    pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE );
 
-    if ( pItem )
+    if (const SvxSizeItem* pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE ))
     {
         // Orientation and Size from the PageItem
-        const SvxSizeItem& rSize = static_cast<const SvxSizeItem&>(*pItem);
         // if the size is already swapped (Landscape)
-        m_aBspWin.SetSize( rSize.GetSize() );
+        m_aBspWin.SetSize( pItem->GetSize() );
     }
 
     // For Writer, either header OR footer can indicate that first H/F will 
have different contents.
@@ -959,17 +947,13 @@ void SvxHFPage::ActivatePage( const SfxItemSet& rSet )
     m_xCntSharedFirstBox->set_active(
         oNonActivatedFirstShared.has_value() ? *oNonActivatedFirstShared : 
bActivatedFirstShared);
 
-    pItem = GetItem( rSet, SID_ATTR_PAGE_EXT1 );
-
-    if ( auto pBoolItem = dynamic_cast<const SfxBoolItem*>( pItem) )
+    if (auto pBoolItem = dynamic_cast<const SfxBoolItem*>(GetItem( rSet, 
SID_ATTR_PAGE_EXT1 )))
     {
         m_aBspWin.SetTable( true );
         m_aBspWin.SetHorz( pBoolItem->GetValue() );
     }
 
-    pItem = GetItem( rSet, SID_ATTR_PAGE_EXT2 );
-
-    if ( auto pBoolItem = dynamic_cast<const SfxBoolItem*>( pItem) )
+    if (const SfxBoolItem* pBoolItem = GetItem( rSet, SID_ATTR_PAGE_EXT2 ))
     {
         m_aBspWin.SetTable( true );
         m_aBspWin.SetVert( pBoolItem->GetValue() );
diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx
index d167b729a514..bee3c4d2049a 100644
--- a/svx/source/dialog/srchdlg.cxx
+++ b/svx/source/dialog/srchdlg.cxx
@@ -153,10 +153,9 @@ struct SearchDlg_Impl
     }
 };
 
-static void ListToStrArr_Impl(sal_uInt16 nId, std::vector<OUString>& rStrLst, 
weld::ComboBox& rCBox, sal_uInt16 nRememberSize)
+static void ListToStrArr_Impl(TypedWhichId<SfxStringListItem> nId, 
std::vector<OUString>& rStrLst, weld::ComboBox& rCBox, sal_uInt16 nRememberSize)
 {
-    const SfxStringListItem* pSrchItem =
-        static_cast<const SfxStringListItem*>(SfxGetpApp()->GetItem( nId ));
+    const SfxStringListItem* pSrchItem = SfxGetpApp()->GetItem( nId );
 
     if (!pSrchItem)
         return;
diff --git a/svx/source/styles/CommonStylePreviewRenderer.cxx 
b/svx/source/styles/CommonStylePreviewRenderer.cxx
index a3163ff4931b..9018b17b7a4c 100644
--- a/svx/source/styles/CommonStylePreviewRenderer.cxx
+++ b/svx/source/styles/CommonStylePreviewRenderer.cxx
@@ -113,97 +113,95 @@ bool CommonStylePreviewRenderer::recalculate()
     SvxFont aCJKFont;
     SvxFont aCTLFont;
 
-    const SfxPoolItem* pItem;
-
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_WEIGHT)) != nullptr)
-        aFont.SetWeight(static_cast<const SvxWeightItem*>(pItem)->GetWeight());
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_CJK_WEIGHT)) != nullptr)
-        aCJKFont.SetWeight(static_cast<const 
SvxWeightItem*>(pItem)->GetWeight());
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_CTL_WEIGHT)) != nullptr)
-        aCTLFont.SetWeight(static_cast<const 
SvxWeightItem*>(pItem)->GetWeight());
-
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_POSTURE)) != nullptr)
-        aFont.SetItalic(static_cast<const 
SvxPostureItem*>(pItem)->GetPosture());
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_CJK_POSTURE)) != nullptr)
-        aCJKFont.SetItalic(static_cast<const 
SvxPostureItem*>(pItem)->GetPosture());
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_CTL_POSTURE)) != nullptr)
-        aCTLFont.SetItalic(static_cast<const 
SvxPostureItem*>(pItem)->GetPosture());
-
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_CONTOUR)) != nullptr)
+    if (const SvxWeightItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_WEIGHT))
+        aFont.SetWeight(pItem->GetWeight());
+    if (const SvxWeightItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_CJK_WEIGHT))
+        aCJKFont.SetWeight(pItem->GetWeight());
+    if (const SvxWeightItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_CTL_WEIGHT))
+        aCTLFont.SetWeight(pItem->GetWeight());
+
+    if (const SvxPostureItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_POSTURE))
+        aFont.SetItalic(pItem->GetPosture());
+    if (const SvxPostureItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_CJK_POSTURE))
+        aCJKFont.SetItalic(pItem->GetPosture());
+    if (const SvxPostureItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_CTL_POSTURE))
+        aCTLFont.SetItalic(pItem->GetPosture());
+
+    if (const SvxContourItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_CONTOUR))
     {
-        auto aVal = static_cast<const SvxContourItem*>(pItem)->GetValue();
+        auto aVal = pItem->GetValue();
         aFont.SetOutline(aVal);
         aCJKFont.SetOutline(aVal);
         aCTLFont.SetOutline(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_SHADOWED)) != nullptr)
+    if (const SvxShadowedItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_SHADOWED))
     {
-        auto aVal = static_cast<const SvxShadowedItem*>(pItem)->GetValue();
+        auto aVal = pItem->GetValue();
         aFont.SetShadow(aVal);
         aCJKFont.SetShadow(aVal);
         aCTLFont.SetShadow(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_RELIEF)) != nullptr)
+    if (const SvxCharReliefItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_RELIEF))
     {
-        auto aVal = static_cast<const SvxCharReliefItem*>(pItem)->GetValue();
+        auto aVal = pItem->GetValue();
         aFont.SetRelief(aVal);
         aCJKFont.SetRelief(aVal);
         aCTLFont.SetRelief(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_UNDERLINE)) != nullptr)
+    if (const SvxUnderlineItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_UNDERLINE))
     {
-        auto aVal = static_cast<const 
SvxUnderlineItem*>(pItem)->GetLineStyle();
+        auto aVal = pItem->GetLineStyle();
         aFont.SetUnderline(aVal);
         aCJKFont.SetUnderline(aVal);
         aCTLFont.SetUnderline(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_OVERLINE)) != nullptr)
+    if (const SvxOverlineItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_OVERLINE))
     {
-        auto aVal = static_cast<const SvxOverlineItem*>(pItem)->GetValue();
+        auto aVal = pItem->GetValue();
         aFont.SetOverline(aVal);
         aCJKFont.SetOverline(aVal);
         aCTLFont.SetOverline(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_STRIKEOUT)) != nullptr)
+    if (const SvxCrossedOutItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_STRIKEOUT))
     {
-        auto aVal = static_cast<const 
SvxCrossedOutItem*>(pItem)->GetStrikeout();
+        auto aVal = pItem->GetStrikeout();
         aFont.SetStrikeout(aVal);
         aCJKFont.SetStrikeout(aVal);
         aCTLFont.SetStrikeout(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_CASEMAP)) != nullptr)
+    if (const SvxCaseMapItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_CASEMAP))
     {
-        auto aVal = static_cast<const SvxCaseMapItem*>(pItem)->GetCaseMap();
+        auto aVal = pItem->GetCaseMap();
         aFont.SetCaseMap(aVal);
         aCJKFont.SetCaseMap(aVal);
         aCTLFont.SetCaseMap(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_EMPHASISMARK)) != nullptr)
+    if (const SvxEmphasisMarkItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_EMPHASISMARK))
     {
-        auto aVal = static_cast<const 
SvxEmphasisMarkItem*>(pItem)->GetEmphasisMark();
+        auto aVal = pItem->GetEmphasisMark();
         aFont.SetEmphasisMark(aVal);
         aCJKFont.SetEmphasisMark(aVal);
         aCTLFont.SetEmphasisMark(aVal);
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_CHAR_COLOR)) != nullptr)
+    if (const SvxColorItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_COLOR))
     {
-        maFontColor = static_cast<const SvxColorItem*>(pItem)->GetValue();
+        maFontColor = pItem->GetValue();
     }
-    if ((pItem = pItemSet->GetItem(SID_ATTR_BRUSH_CHAR)) != nullptr)
+    if (const SvxBrushItem* pItem = pItemSet->GetItem(SID_ATTR_BRUSH_CHAR))
     {
-        maHighlightColor = static_cast<const SvxBrushItem*>(pItem)->GetColor();
+        maHighlightColor = pItem->GetColor();
     }
 
     if (mpStyle->GetFamily() == SfxStyleFamily::Para)
     {
-        if ((pItem = pItemSet->GetItem(XATTR_FILLSTYLE)) != nullptr)
+        if (const XFillStyleItem* pItem = pItemSet->GetItem(XATTR_FILLSTYLE))
         {
-            css::drawing::FillStyle aFillStyle = static_cast<const 
XFillStyleItem*>(pItem)->GetValue();
+            css::drawing::FillStyle aFillStyle = pItem->GetValue();
             if (aFillStyle == drawing::FillStyle_SOLID)
             {
-                if ((pItem = pItemSet->GetItem(XATTR_FILLCOLOR)) != nullptr)
+                if (const XFillColorItem* pFillColorItem = 
pItemSet->GetItem(XATTR_FILLCOLOR))
                 {
-                    maBackgroundColor = static_cast<const 
XFillColorItem*>(pItem)->GetColorValue();
+                    maBackgroundColor = pFillColorItem->GetColorValue();
                 }
             }
         }
diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx
index 294092a91b0e..acf10421c748 100644
--- a/svx/source/svdraw/svdedtv1.cxx
+++ b/svx/source/svdraw/svdedtv1.cxx
@@ -979,10 +979,10 @@ void SdrEditView::MergeAttrFromMarked(SfxItemSet& rAttr, 
bool bOnlyHardAttr) con
                 {
                     case XATTR_LINECOLOR:
                     {
-                        const SfxPoolItem* pItem = 
rSet.GetItem(XATTR_LINECOLOR);
+                        const XLineColorItem* pItem = 
rSet.GetItem(XATTR_LINECOLOR);
                         if (pItem)
                         {
-                            Color aColor = static_cast<const 
XLineColorItem*>(pItem)->GetColorValue();
+                            Color aColor = pItem->GetColorValue();
                             sPayload = 
OUString::number(static_cast<sal_uInt32>(aColor));
 
                             sPayload = ".uno:XLineColor=" + sPayload;
@@ -992,10 +992,10 @@ void SdrEditView::MergeAttrFromMarked(SfxItemSet& rAttr, 
bool bOnlyHardAttr) con
 
                     case XATTR_FILLCOLOR:
                     {
-                        const SfxPoolItem* pItem = 
rSet.GetItem(XATTR_FILLCOLOR);
+                        const XFillColorItem* pItem = 
rSet.GetItem(XATTR_FILLCOLOR);
                         if (pItem)
                         {
-                            Color aColor = static_cast<const 
XFillColorItem*>(pItem)->GetColorValue();
+                            Color aColor = pItem->GetColorValue();
                             sPayload = 
OUString::number(static_cast<sal_uInt32>(aColor));
 
                             sPayload = ".uno:FillColor=" + sPayload;
@@ -1005,10 +1005,10 @@ void SdrEditView::MergeAttrFromMarked(SfxItemSet& 
rAttr, bool bOnlyHardAttr) con
 
                     case XATTR_FILLTRANSPARENCE:
                     {
-                        const SfxPoolItem* pItem = 
rSet.GetItem(XATTR_FILLTRANSPARENCE);
+                        const XFillTransparenceItem* pItem = 
rSet.GetItem(XATTR_FILLTRANSPARENCE);
                         if (pItem)
                         {
-                            sal_uInt16 nTransparency = static_cast<const 
XFillTransparenceItem*>(pItem)->GetValue();
+                            sal_uInt16 nTransparency = pItem->GetValue();
                             sPayload = OUString::number(nTransparency);
 
                             sPayload = ".uno:FillTransparence=" + sPayload;
@@ -1018,10 +1018,10 @@ void SdrEditView::MergeAttrFromMarked(SfxItemSet& 
rAttr, bool bOnlyHardAttr) con
 
                     case XATTR_LINETRANSPARENCE:
                     {
-                        const SfxPoolItem* pItem = 
rSet.GetItem(XATTR_LINETRANSPARENCE);
+                        const SfxUInt16Item* pItem = 
rSet.GetItem(XATTR_LINETRANSPARENCE);
                         if (pItem)
                         {
-                            sal_uInt16 nTransparency = static_cast<const 
SfxUInt16Item*>(pItem)->GetValue();
+                            sal_uInt16 nTransparency = pItem->GetValue();
                             sPayload = OUString::number(nTransparency);
 
                             sPayload = ".uno:LineTransparence=" + sPayload;
@@ -1031,10 +1031,10 @@ void SdrEditView::MergeAttrFromMarked(SfxItemSet& 
rAttr, bool bOnlyHardAttr) con
 
                     case XATTR_LINEWIDTH:
                     {
-                        const SfxPoolItem* pItem = 
rSet.GetItem(XATTR_LINEWIDTH);
+                        const XLineWidthItem* pItem = 
rSet.GetItem(XATTR_LINEWIDTH);
                         if (pItem)
                         {
-                            sal_uInt32 nWidth = static_cast<const 
XLineWidthItem*>(pItem)->GetValue();
+                            sal_uInt32 nWidth = pItem->GetValue();
                             sPayload = OUString::number(nWidth);
 
                             sPayload = ".uno:LineWidth=" + sPayload;
@@ -1044,10 +1044,10 @@ void SdrEditView::MergeAttrFromMarked(SfxItemSet& 
rAttr, bool bOnlyHardAttr) con
 
                     case SDRATTR_SHADOWTRANSPARENCE:
                     {
-                        const SfxPoolItem* pItem = 
rSet.GetItem(SDRATTR_SHADOWTRANSPARENCE);
+                        const SfxUInt16Item* pItem = 
rSet.GetItem(SDRATTR_SHADOWTRANSPARENCE);
                         if (pItem)
                         {
-                            sal_uInt16 nWidth = static_cast<const 
SfxUInt16Item*>(pItem)->GetValue();
+                            sal_uInt16 nWidth = pItem->GetValue();
                             sPayload = OUString::number(nWidth);
 
                             sPayload = ".uno:FillShadowTransparency=" + 
sPayload;
diff --git a/svx/source/tbxctrls/StylesPreviewWindow.cxx 
b/svx/source/tbxctrls/StylesPreviewWindow.cxx
index f300d70b514c..8230b61ec96a 100644
--- a/svx/source/tbxctrls/StylesPreviewWindow.cxx
+++ b/svx/source/tbxctrls/StylesPreviewWindow.cxx
@@ -216,36 +216,32 @@ bool StylesPreviewWindow_Base::Command(const 
CommandEvent& rEvent)
 
 static Color GetTextColorFromItemSet(std::optional<SfxItemSet> const& pItemSet)
 {
-    const SfxPoolItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_COLOR);
-    if (pItem)
-        return static_cast<const SvxColorItem*>(pItem)->GetValue();
+    if (const SvxColorItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_COLOR))
+        return pItem->GetValue();
 
     return COL_AUTO;
 }
 
 static Color GetHighlightColorFromItemSet(std::optional<SfxItemSet> const& 
pItemSet)
 {
-    const SfxPoolItem* pItem = pItemSet->GetItem(SID_ATTR_BRUSH_CHAR);
-    if (pItem)
-        return static_cast<const SvxBrushItem*>(pItem)->GetColor();
+    if (const SvxBrushItem* pItem = pItemSet->GetItem(SID_ATTR_BRUSH_CHAR))
+        return pItem->GetColor();
 
     return COL_AUTO;
 }
 
 static Color GetBackgroundColorFromItemSet(std::optional<SfxItemSet> const& 
pItemSet)
 {
-    const SfxPoolItem* pItem = pItemSet->GetItem(XATTR_FILLCOLOR);
-    if (pItem)
-        return static_cast<const XFillColorItem*>(pItem)->GetColorValue();
+    if (const XFillColorItem* pItem = pItemSet->GetItem(XATTR_FILLCOLOR))
+        return pItem->GetColorValue();
 
     return COL_AUTO;
 }
 
 static css::drawing::FillStyle 
GetFillStyleFromItemSet(std::optional<SfxItemSet> const& pItemSet)
 {
-    const SfxPoolItem* pItem = pItemSet->GetItem(XATTR_FILLSTYLE);
-    if (pItem)
-        return static_cast<const XFillStyleItem*>(pItem)->GetValue();
+    if (const XFillStyleItem* pItem = pItemSet->GetItem(XATTR_FILLSTYLE))
+        return pItem->GetValue();
 
     return css::drawing::FillStyle_NONE;
 }
@@ -259,45 +255,35 @@ static SvxFont GetFontFromItems(const SvxFontItem* 
pFontItem, Size aPixelFontSiz
     aFont.SetStyleName(pFontItem->GetStyleName());
     aFont.SetFontSize(aPixelFontSize);
 
-    const SfxPoolItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_WEIGHT);
-    if (pItem)
-        aFont.SetWeight(static_cast<const SvxWeightItem*>(pItem)->GetWeight());
+    if (const SvxWeightItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_WEIGHT))
+        aFont.SetWeight(pItem->GetWeight());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_POSTURE);
-    if (pItem)
-        aFont.SetItalic(static_cast<const 
SvxPostureItem*>(pItem)->GetPosture());
+    if (const SvxPostureItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_POSTURE))
+        aFont.SetItalic(pItem->GetPosture());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_CONTOUR);
-    if (pItem)
-        aFont.SetOutline(static_cast<const 
SvxContourItem*>(pItem)->GetValue());
+    if (const SvxContourItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_CONTOUR))
+        aFont.SetOutline(pItem->GetValue());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_SHADOWED);
-    if (pItem)
-        aFont.SetShadow(static_cast<const 
SvxShadowedItem*>(pItem)->GetValue());
+    if (const SvxShadowedItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_SHADOWED))
+        aFont.SetShadow(pItem->GetValue());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_RELIEF);
-    if (pItem)
-        aFont.SetRelief(static_cast<const 
SvxCharReliefItem*>(pItem)->GetValue());
+    if (const SvxCharReliefItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_RELIEF))
+        aFont.SetRelief(pItem->GetValue());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_UNDERLINE);
-    if (pItem)
-        aFont.SetUnderline(static_cast<const 
SvxUnderlineItem*>(pItem)->GetLineStyle());
+    if (const SvxUnderlineItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_UNDERLINE))
+        aFont.SetUnderline(pItem->GetLineStyle());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_OVERLINE);
-    if (pItem)
-        aFont.SetOverline(static_cast<const 
SvxOverlineItem*>(pItem)->GetValue());
+    if (const SvxOverlineItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_OVERLINE))
+        aFont.SetOverline(pItem->GetValue());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_STRIKEOUT);
-    if (pItem)
-        aFont.SetStrikeout(static_cast<const 
SvxCrossedOutItem*>(pItem)->GetStrikeout());
+    if (const SvxCrossedOutItem* pItem = 
pItemSet->GetItem(SID_ATTR_CHAR_STRIKEOUT))
+        aFont.SetStrikeout(pItem->GetStrikeout());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_CASEMAP);
-    if (pItem)
-        aFont.SetCaseMap(static_cast<const 
SvxCaseMapItem*>(pItem)->GetCaseMap());
+    if (const SvxCaseMapItem* pItem = pItemSet->GetItem(SID_ATTR_CHAR_CASEMAP))
+        aFont.SetCaseMap(pItem->GetCaseMap());
 
-    pItem = pItemSet->GetItem(SID_ATTR_CHAR_EMPHASISMARK);
-    if (pItem)
-        aFont.SetEmphasisMark(static_cast<const 
SvxEmphasisMarkItem*>(pItem)->GetEmphasisMark());
+    if (const SvxEmphasisMarkItem* pEmphasisItem = 
pItemSet->GetItem(SID_ATTR_CHAR_EMPHASISMARK))
+        aFont.SetEmphasisMark(pEmphasisItem->GetEmphasisMark());
 
     return aFont;
 }
diff --git a/svx/source/tbxctrls/colrctrl.cxx b/svx/source/tbxctrls/colrctrl.cxx
index 1f6335ee90ed..53511d77920f 100644
--- a/svx/source/tbxctrls/colrctrl.cxx
+++ b/svx/source/tbxctrls/colrctrl.cxx
@@ -211,10 +211,9 @@ SvxColorDockingWindow::SvxColorDockingWindow(SfxBindings* 
_pBindings, SfxChildWi
 
     if ( pDocSh )
     {
-        const SfxPoolItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE );
-        if( pItem )
+        if (const SvxColorListItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE 
))
         {
-            pColorList = static_cast<const 
SvxColorListItem*>(pItem)->GetColorList();
+            pColorList = pItem->GetColorList();
             FillValueSet();
         }
     }
diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx
index ef901fcfb24e..8b07ac2803f1 100644
--- a/svx/source/tbxctrls/linectrl.cxx
+++ b/svx/source/tbxctrls/linectrl.cxx
@@ -284,9 +284,8 @@ 
SvxLineEndWindow::SvxLineEndWindow(SvxLineEndToolBoxControl* pControl, weld::Wid
     SfxObjectShell* pDocSh = SfxObjectShell::Current();
     if ( pDocSh )
     {
-        const SfxPoolItem*  pItem = pDocSh->GetItem( SID_LINEEND_LIST );
-        if( pItem )
-            mpLineEndList = static_cast<const SvxLineEndListItem*>( pItem 
)->GetLineEndList();
+        if (const SvxLineEndListItem* pItem = pDocSh->GetItem( 
SID_LINEEND_LIST ))
+            mpLineEndList = pItem->GetLineEndList();
     }
     DBG_ASSERT( mpLineEndList.is(), "LineEndList not found" );
 
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 1cd57098bab2..7ffcd1b6ac40 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1408,73 +1408,65 @@ void SvxStyleBox_Base::SetupEntry(vcl::RenderContext& 
rRenderContext, sal_Int32
     SetFontStyle(*pItemSet, SID_ATTR_CHAR_CJK_POSTURE, 
SID_ATTR_CHAR_CJK_WEIGHT, aCJKFont);
     SetFontStyle(*pItemSet, SID_ATTR_CHAR_CTL_POSTURE, 
SID_ATTR_CHAR_CTL_WEIGHT, aCTLFont);
 
-    const SfxPoolItem *pItem = pItemSet->GetItem( SID_ATTR_CHAR_CONTOUR );
-    if ( pItem )
+    if (const SvxContourItem *pContourItem = pItemSet->GetItem( 
SID_ATTR_CHAR_CONTOUR ))
     {
-        auto aVal = static_cast< const SvxContourItem* >( pItem )->GetValue();
+        auto aVal = pContourItem->GetValue();
         aFont.SetOutline(aVal);
         aCJKFont.SetOutline(aVal);
         aCTLFont.SetOutline(aVal);
     }
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_SHADOWED );
-    if ( pItem )
+    if (const SvxShadowedItem* pShadowedItem = pItemSet->GetItem( 
SID_ATTR_CHAR_SHADOWED ))
     {
-        auto aVal = static_cast< const SvxShadowedItem* >( pItem )->GetValue();
+        auto aVal = pShadowedItem->GetValue();
         aFont.SetShadow(aVal);
         aCJKFont.SetShadow(aVal);
         aCTLFont.SetShadow(aVal);
     }
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_RELIEF );
-    if ( pItem )
+    if (const SvxCharReliefItem* pCharReliefItem = pItemSet->GetItem( 
SID_ATTR_CHAR_RELIEF ))
     {
-        auto aVal = static_cast< const SvxCharReliefItem* >( pItem 
)->GetValue();
+        auto aVal = pCharReliefItem->GetValue();
         aFont.SetRelief(aVal);
         aCJKFont.SetRelief(aVal);
         aCTLFont.SetRelief(aVal);
     }
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_UNDERLINE );
-    if ( pItem )
+    if (const SvxUnderlineItem* pUnderlineItem = pItemSet->GetItem( 
SID_ATTR_CHAR_UNDERLINE ))
     {
-        auto aVal = static_cast<const 
SvxUnderlineItem*>(pItem)->GetLineStyle();
+        auto aVal = pUnderlineItem->GetLineStyle();
         aFont.SetUnderline(aVal);
         aCJKFont.SetUnderline(aVal);
         aCTLFont.SetUnderline(aVal);
     }
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_OVERLINE );
-    if ( pItem )
+    if (const SvxOverlineItem* pOverlineItem = pItemSet->GetItem( 
SID_ATTR_CHAR_OVERLINE ))
     {
-        auto aVal = static_cast< const SvxOverlineItem* >( pItem )->GetValue();
+        auto aVal = pOverlineItem->GetValue();
         aFont.SetOverline(aVal);
         aCJKFont.SetOverline(aVal);
         aCTLFont.SetOverline(aVal);
     }
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_STRIKEOUT );
-    if ( pItem )
+    if (const SvxCrossedOutItem* pCrossedOutItem = pItemSet->GetItem( 
SID_ATTR_CHAR_STRIKEOUT ))
     {
-        auto aVal = static_cast< const SvxCrossedOutItem* >( pItem 
)->GetStrikeout();
+        auto aVal = pCrossedOutItem->GetStrikeout();
         aFont.SetStrikeout(aVal);
         aCJKFont.SetStrikeout(aVal);
         aCTLFont.SetStrikeout(aVal);
     }
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_CASEMAP );
-    if ( pItem )
+    if (const SvxCaseMapItem* pCaseMapItem = pItemSet->GetItem( 
SID_ATTR_CHAR_CASEMAP ))
     {
-        auto aVal = static_cast<const SvxCaseMapItem*>(pItem)->GetCaseMap();
+        auto aVal = pCaseMapItem->GetCaseMap();
         aFont.SetCaseMap(aVal);
         aCJKFont.SetCaseMap(aVal);
         aCTLFont.SetCaseMap(aVal);
     }
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_EMPHASISMARK );
-    if ( pItem )
+    if (const SvxEmphasisMarkItem* pEmphasisMarkItem = pItemSet->GetItem( 
SID_ATTR_CHAR_EMPHASISMARK ))
     {
-        auto aVal = static_cast< const SvxEmphasisMarkItem* >( pItem 
)->GetEmphasisMark();
+        auto aVal = pEmphasisMarkItem->GetEmphasisMark();
         aFont.SetEmphasisMark(aVal);
         aCJKFont.SetEmphasisMark(aVal);
         aCTLFont.SetEmphasisMark(aVal);
@@ -1483,26 +1475,25 @@ void SvxStyleBox_Base::SetupEntry(vcl::RenderContext& 
rRenderContext, sal_Int32
     // setup the device & draw
     Color aFontCol = COL_AUTO, aBackCol = COL_AUTO;
 
-    pItem = pItemSet->GetItem( SID_ATTR_CHAR_COLOR );
+    const SvxColorItem* pColorItem = pItemSet->GetItem( SID_ATTR_CHAR_COLOR );
     // text color, when nothing is selected
-    if ( (nullptr != pItem) && bIsNotSelected)
-        aFontCol = static_cast< const SvxColorItem* >( pItem )->GetValue();
+    if ( pColorItem && bIsNotSelected)
+        aFontCol = pColorItem->GetValue();
 
     drawing::FillStyle style = drawing::FillStyle_NONE;
     // which kind of Fill style is selected
-    pItem = pItemSet->GetItem( XATTR_FILLSTYLE );
+    const XFillStyleItem* pFillStyleItem = pItemSet->GetItem( XATTR_FILLSTYLE 
);
     // only when ok and not selected
-    if ( (nullptr != pItem) && bIsNotSelected)
-        style = static_cast< const XFillStyleItem* >( pItem )->GetValue();
+    if ( pFillStyleItem && bIsNotSelected)
+        style = pFillStyleItem->GetValue();
 
     switch(style)
     {
         case drawing::FillStyle_SOLID:
         {
             // set background color
-            pItem = pItemSet->GetItem( XATTR_FILLCOLOR );
-            if ( nullptr != pItem )
-                aBackCol = static_cast< const XFillColorItem* >( pItem 
)->GetColorValue();
+            if (const XFillColorItem* pFillColorItem = pItemSet->GetItem( 
XATTR_FILLCOLOR ))
+                aBackCol = pFillColorItem->GetColorValue();
 
             if ( aBackCol != COL_AUTO )
             {
diff --git a/sw/inc/coreframestyle.hxx b/sw/inc/coreframestyle.hxx
index 07d5ab5e33c2..1ac60f271112 100644
--- a/sw/inc/coreframestyle.hxx
+++ b/sw/inc/coreframestyle.hxx
@@ -19,6 +19,7 @@
 #pragma once
 
 #include <com/sun/star/document/XEventsSupplier.hpp>
+#include <svl/typedwhich.hxx>
 
 class SfxPoolItem;
 
@@ -29,6 +30,10 @@ class ICoreFrameStyle
 public:
     virtual void SetItem(sal_uInt16 eAtr, const SfxPoolItem& rItem) = 0;
     virtual const SfxPoolItem* GetItem(sal_uInt16 eAtr) = 0;
+    template <class T> const T* GetItem(TypedWhichId<T> nWhich)
+    {
+        return static_cast<const T*>(GetItem(sal_uInt16(nWhich)));
+    }
     virtual css::document::XEventsSupplier& GetEventsSupplier() = 0;
     virtual ~ICoreFrameStyle(){};
 };
diff --git a/sw/source/core/text/pormulti.cxx b/sw/source/core/text/pormulti.cxx
index d4495587d5f1..07dee93ea31d 100644
--- a/sw/source/core/text/pormulti.cxx
+++ b/sw/source/core/text/pormulti.cxx
@@ -192,12 +192,7 @@ SwRotatedPortion::SwRotatedPortion( const SwMultiCreator& 
rCreate,
     if( !pRot )
     {
         const SwTextAttr& rAttr = *rCreate.pAttr;
-        const SfxPoolItem *const pItem =
-                CharFormat::GetItem(rAttr, RES_CHRATR_ROTATE);
-        if ( pItem )
-        {
-            pRot = static_cast<const SvxCharRotateItem*>(pItem);
-        }
+        pRot = CharFormat::GetItem(rAttr, RES_CHRATR_ROTATE);
     }
     if( pRot )
     {
@@ -313,12 +308,7 @@ SwDoubleLinePortion::SwDoubleLinePortion(
         const SwTextAttr& rAttr = *rCreate.pAttr;
         m_pBracket->nStart = rCreate.nStartOfAttr;
 
-        const SfxPoolItem * const pItem =
-            CharFormat::GetItem( rAttr, RES_CHRATR_TWO_LINES );
-        if ( pItem )
-        {
-            pTwo = static_cast<const SvxTwoLinesItem*>(pItem);
-        }
+        pTwo = CharFormat::GetItem( rAttr, RES_CHRATR_TWO_LINES );
     }
     if( pTwo )
     {
diff --git a/sw/source/core/unocore/unoevent.cxx 
b/sw/source/core/unocore/unoevent.cxx
index e9533dc8350d..cc39043fa29e 100644
--- a/sw/source/core/unocore/unoevent.cxx
+++ b/sw/source/core/unocore/unoevent.cxx
@@ -214,10 +214,8 @@ void SwFrameStyleEventDescriptor::setMacroItem(const 
SvxMacroItem& rItem)
 
 const SvxMacroItem& SwFrameStyleEventDescriptor::getMacroItem()
 {
-    const SfxPoolItem* pItem(m_rStyle.GetItem(RES_FRMMACRO));
-    return pItem ?
-        static_cast<const SvxMacroItem&>(*pItem) :
-        *GetDfltAttr(RES_FRMMACRO);
+    const SvxMacroItem* pItem(m_rStyle.GetItem(RES_FRMMACRO));
+    return pItem ? *pItem : *GetDfltAttr(RES_FRMMACRO);
 }
 
 OUString SwFrameStyleEventDescriptor::getImplementationName()
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx 
b/sw/source/filter/ww8/docxattributeoutput.cxx
index 703dcc18263f..ce78c57f82f1 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -606,10 +606,9 @@ sal_Int32 DocxAttributeOutput::StartParagraph(const 
ww8::WW8TableNodeInfo::Point
         if (pTextNode && pTextNode->GetpSwAttrSet())
         {
             const SfxItemSet* pSet = pTextNode->GetpSwAttrSet();
-            if (const SfxPoolItem* pItem = pSet->GetItem(RES_PARATR_GRABBAG))
+            if (const SfxGrabBagItem* pParaGrabBag = 
pSet->GetItem(RES_PARATR_GRABBAG))
             {
-                const SfxGrabBagItem& rParaGrabBag = static_cast<const 
SfxGrabBagItem&>(*pItem);
-                const std::map<OUString, css::uno::Any>& rMap = 
rParaGrabBag.GetGrabBag();
+                const std::map<OUString, css::uno::Any>& rMap = 
pParaGrabBag->GetGrabBag();
                 bEndParaSdt = m_aParagraphSdt.m_bStartedSdt && 
rMap.contains(u"ParaSdtEndBefore"_ustr);
             }
         }
diff --git a/sw/source/filter/ww8/writerwordglue.cxx 
b/sw/source/filter/ww8/writerwordglue.cxx
index 0db302e5924b..dcd1d902b38a 100644
--- a/sw/source/filter/ww8/writerwordglue.cxx
+++ b/sw/source/filter/ww8/writerwordglue.cxx
@@ -426,7 +426,7 @@ namespace sw
             m_DyaTop = m_DyaHdrTop;
             m_DyaBottom = m_DyaHdrBottom;
 
-            const SwFormatHeader *pHd = 
rPage.GetItem<SwFormatHeader>(RES_HEADER);
+            const SwFormatHeader *pHd = rPage.GetItem(RES_HEADER);
             if (pHd && pHd->IsActive() && pHd->GetHeaderFormat())
             {
                 mbHasHeader = true;
@@ -435,7 +435,7 @@ namespace sw
             else
                 mbHasHeader = false;
 
-            const SwFormatFooter *pFt = 
rPage.GetItem<SwFormatFooter>(RES_FOOTER);
+            const SwFormatFooter *pFt = rPage.GetItem(RES_FOOTER);
             if (pFt && pFt->IsActive() && pFt->GetFooterFormat())
             {
                 mbHasFooter = true;
diff --git a/sw/source/filter/ww8/wrtw8nds.cxx 
b/sw/source/filter/ww8/wrtw8nds.cxx
index f795be4b6b0c..8b8d3b88e58c 100644
--- a/sw/source/filter/ww8/wrtw8nds.cxx
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -1853,9 +1853,9 @@ OUString SwWW8AttrIter::GetSnippet(const OUString &rStr, 
sal_Int32 nCurrentPos,
     aSnippet = comphelper::string::removeAny(aSnippet, aForbidden);
 
     m_rExport.m_aCurrentCharPropStarts.push( nCurrentPos );
-    const SfxPoolItem &rItem = GetItem(RES_CHRATR_CASEMAP);
+    const SvxCaseMapItem &rItem = GetItem(RES_CHRATR_CASEMAP);
 
-    if (SvxCaseMap::Capitalize == static_cast<const 
SvxCaseMapItem&>(rItem).GetValue())
+    if (SvxCaseMap::Capitalize == rItem.GetValue())
     {
         assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is());
         sal_uInt16 nScriptType = 
g_pBreakIt->GetBreakIter()->getScriptType(aSnippet, 0);
@@ -1864,14 +1864,14 @@ OUString SwWW8AttrIter::GetSnippet(const OUString 
&rStr, sal_Int32 nCurrentPos,
         switch (nScriptType)
         {
         case i18n::ScriptType::ASIAN:
-                nLanguage = static_cast<const 
SvxLanguageItem&>(GetItem(RES_CHRATR_CJK_LANGUAGE)).GetLanguage();
+                nLanguage = GetItem(RES_CHRATR_CJK_LANGUAGE).GetLanguage();
                 break;
         case i18n::ScriptType::COMPLEX:
-                nLanguage = static_cast<const 
SvxLanguageItem&>(GetItem(RES_CHRATR_CTL_LANGUAGE)).GetLanguage();
+                nLanguage = GetItem(RES_CHRATR_CTL_LANGUAGE).GetLanguage();
                 break;
         case i18n::ScriptType::LATIN:
             default:
-                nLanguage = static_cast<const 
SvxLanguageItem&>(GetItem(RES_CHRATR_LANGUAGE)).GetLanguage();
+                nLanguage = GetItem(RES_CHRATR_LANGUAGE).GetLanguage();
                 break;
         }
 
@@ -2308,13 +2308,9 @@ OUString lcl_GetSymbolFont(SwAttrPool& rPool, const 
SwTextNode& rTextNode, int n
     SfxItemSetFixed<RES_CHRATR_FONT, RES_CHRATR_FONT> aSet( rPool );
     if (rTextNode.GetParaAttr(aSet, nStart, nEnd))
     {
-        SfxPoolItem const* pPoolItem = aSet.GetItem(RES_CHRATR_FONT);
-        if (pPoolItem)
-        {
-            const SvxFontItem* pFontItem = static_cast<const 
SvxFontItem*>(pPoolItem);
-            if (pFontItem->GetCharSet() == RTL_TEXTENCODING_SYMBOL)
-                return pFontItem->GetFamilyName();
-        }
+        SvxFontItem const* pFontItem = aSet.GetItem(RES_CHRATR_FONT);
+        if (pFontItem && pFontItem->GetCharSet() == RTL_TEXTENCODING_SYMBOL)
+            return pFontItem->GetFamilyName();
     }
 
     return OUString();
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index 6aa9cacac1ea..7cbbf3adcb46 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -1474,6 +1474,10 @@ public:
         return static_cast<const T*>(HasTextItem(sal_uInt16(nWhich)));
     }
     virtual const SfxPoolItem& GetItem( sal_uInt16 nWhich ) const = 0;
+    template<class T> const T& GetItem( TypedWhichId<T> nWhich ) const
+    {
+        return static_cast<const T&>(GetItem(sal_uInt16(nWhich)));
+    }
 };
 
 /// Used to export formatted text associated to drawings.
@@ -1513,6 +1517,7 @@ public:
     void OutAttr( sal_Int32 nSwPos );
     virtual const SfxPoolItem* HasTextItem( sal_uInt16 nWhich ) const override;
     virtual const SfxPoolItem& GetItem( sal_uInt16 nWhich ) const override;
+    template<class T> const T& GetItem( TypedWhichId<T> nWhich ) const { 
return MSWordAttrIter::GetItem(nWhich); }
     sal_Int32 WhereNext() const                { return m_nCurrentSwPos; }
     rtl_TextEncoding GetNextCharSet() const;
     rtl_TextEncoding GetNodeCharSet() const     { return m_eNdChrSet; }
@@ -1572,6 +1577,7 @@ public:
     void OutAttr(sal_Int32 nSwPos, bool bWriteCombinedChars);
     virtual const SfxPoolItem* HasTextItem( sal_uInt16 nWhich ) const override;
     virtual const SfxPoolItem& GetItem( sal_uInt16 nWhich ) const override;
+    template<class T> const T& GetItem( TypedWhichId<T> nWhich ) const { 
return MSWordAttrIter::GetItem(nWhich); }
     int OutAttrWithRange(const SwTextNode& rNode, sal_Int32 nPos);
     const SwRedlineData* GetParagraphLevelRedline( );
     const SwRedlineData* GetRunLevelRedline( sal_Int32 nPos );
diff --git a/sw/source/ui/misc/pgfnote.cxx b/sw/source/ui/misc/pgfnote.cxx
index 4669c303d91e..ac9362903f2e 100644
--- a/sw/source/ui/misc/pgfnote.cxx
+++ b/sw/source/ui/misc/pgfnote.cxx
@@ -163,10 +163,10 @@ void SwFootNotePage::Reset(const SfxItemSet *rSet)
     // if no example exists, otherwise Init here in Activate
     std::optional<SwPageFootnoteInfo> pDefFootnoteInfo;
     const SwPageFootnoteInfo* pFootnoteInfo;
-    const SfxPoolItem* pItem = SfxTabPage::GetItem(*rSet, FN_PARAM_FTN_INFO);
+    const SwPageFootnoteInfoItem* pItem = SfxTabPage::GetItem(*rSet, 
FN_PARAM_FTN_INFO);
     if( pItem )
     {
-        pFootnoteInfo = &static_cast<const 
SwPageFootnoteInfoItem*>(pItem)->GetPageFootnoteInfo();
+        pFootnoteInfo = &pItem->GetPageFootnoteInfo();
     }
     else
     {
commit 558a189c7c779c9808aadf90a9a75f71b2ab7594
Author:     Noel Grandin <[email protected]>
AuthorDate: Fri Jan 9 10:07:52 2026 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Sat Jan 10 12:15:32 2026 +0100

    used more TypeWhichId to avoid casting
    
    Change-Id: Icd281619c1d86506d5f248234562a7cf2c5ead77
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196903
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/cui/source/dialogs/srchxtra.cxx b/cui/source/dialogs/srchxtra.cxx
index 7081f2eab84f..684e5d91eff1 100644
--- a/cui/source/dialogs/srchxtra.cxx
+++ b/cui/source/dialogs/srchxtra.cxx
@@ -73,8 +73,7 @@ void SvxSearchFormatDialog::PageCreated(const OUString& rId, 
SfxTabPage& rPage)
         const FontList* pApm_pFontList = nullptr;
         if (SfxObjectShell* pSh = SfxObjectShell::Current())
         {
-            const SvxFontListItem* pFLItem = static_cast<const 
SvxFontListItem*>(
-                pSh->GetItem( SID_ATTR_CHAR_FONTLIST ));
+            const SvxFontListItem* pFLItem = pSh->GetItem( 
SID_ATTR_CHAR_FONTLIST );
             if ( pFLItem )
                 pApm_pFontList = pFLItem->GetFontList();
         }
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index a9725e22388b..da9e62a6913a 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -349,12 +349,11 @@ const FontList* SvxCharNamePage::GetFontList() const
         /* #110771# SvxFontListItem::GetFontList can return NULL */
         if (SfxObjectShell* pDocSh = SfxObjectShell::Current())
         {
-            const SfxPoolItem* pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST 
);
+            const SvxFontListItem* pItem = pDocSh->GetItem( 
SID_ATTR_CHAR_FONTLIST );
             if ( pItem != nullptr )
             {
-                DBG_ASSERT(nullptr != static_cast<const 
SvxFontListItem*>(pItem)->GetFontList(),
-                           "Where is the font list?");
-                m_pImpl->m_pFontList = static_cast<const 
SvxFontListItem*>(pItem )->GetFontList()->Clone();
+                DBG_ASSERT(nullptr != pItem->GetFontList(), "Where is the font 
list?");
+                m_pImpl->m_pFontList = pItem->GetFontList()->Clone();
             }
         }
         if(!m_pImpl->m_pFontList)
diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx
index 3d3e5083294f..aa2618c51f06 100644
--- a/cui/source/tabpages/numpages.cxx
+++ b/cui/source/tabpages/numpages.cxx
@@ -764,8 +764,7 @@ IMPL_LINK_NOARG(SvxNumPickTabPage, NumSelectHdl_Impl, 
ValueSet*, void)
                     if (SfxObjectShell* pCurDocShell = 
SfxObjectShell::Current())
                     {
                         const SvxFontListItem* pFontListItem =
-                                static_cast<const SvxFontListItem*>( 
pCurDocShell
-                                                    ->GetItem( 
SID_ATTR_CHAR_FONTLIST ));
+                                pCurDocShell->GetItem( SID_ATTR_CHAR_FONTLIST 
);
                         pList = pFontListItem ? pFontListItem->GetFontList() : 
nullptr;
                     }
                 }
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 5a7c94afe24c..1e6f3cfb1ad5 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1392,8 +1392,7 @@ const vcl::Font* FindFont(std::u16string_view rFontName)
     SfxObjectShell* pDocSh = SfxObjectShell::Current();
     if (!pDocSh)
         return nullptr;
-    const SvxFontListItem* pFonts
-        = static_cast<const 
SvxFontListItem*>(pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST));
+    const SvxFontListItem* pFonts = pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST);
     const FontList* pList = pFonts ? pFonts->GetFontList() : nullptr;
     if (pList && !rFontName.empty())
         if (sal_Handle hMetric = pList->GetFirstFontMetric(rFontName))
@@ -6457,8 +6456,7 @@ static char* getFonts (const char* pCommand, const bool 
bBloatWithRepeatedSizes)
     SfxObjectShell* pDocSh = SfxObjectShell::Current();
     if (!pDocSh)
         return nullptr;
-    const SvxFontListItem* pFonts = static_cast<const SvxFontListItem*>(
-        pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST));
+    const SvxFontListItem* pFonts = pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST);
     const FontList* pList = pFonts ? pFonts->GetFontList() : nullptr;
 
     if (!bBloatWithRepeatedSizes)
diff --git a/include/editeng/editids.hrc b/include/editeng/editids.hrc
index 2b29c3e34fde..c431aeb6760f 100644
--- a/include/editeng/editids.hrc
+++ b/include/editeng/editids.hrc
@@ -67,6 +67,7 @@ class SvxWeightItem;
 class SvxWidowsItem;
 class SvxWordLineModeItem;
 class SvxScriptHintItem;
+class SvxFontListItem;
 
 /*
   These SID_SVX_START entries came from include/svx/svxids.hrc, avoid
@@ -95,7 +96,7 @@ class SvxScriptHintItem;
 #define SID_ATTR_CHAR_CASEMAP                           
TypedWhichId<SvxCaseMapItem>( SID_SVX_START + 19 )
 #define SID_ATTR_CHAR_LANGUAGE                          
TypedWhichId<SvxLanguageItem>( SID_SVX_START + 20 )
 #define SID_ATTR_CHAR_ESCAPEMENT                        
TypedWhichId<SvxEscapementItem>( SID_SVX_START + 21 )
-#define SID_ATTR_CHAR_FONTLIST                          ( SID_SVX_START + 22 )
+#define SID_ATTR_CHAR_FONTLIST                          
TypedWhichId<SvxFontListItem>( SID_SVX_START + 22 )
 #define SID_ATTR_BORDER_OUTER                           
TypedWhichId<SvxBoxItem>( SID_SVX_START + 24 )
 #define SID_ATTR_BORDER_SHADOW                          
TypedWhichId<SvxShadowItem>( SID_SVX_START + 25 )
 #define SID_ATTR_PARA_ADJUST                            
TypedWhichId<SvxAdjustItem>( SID_SVX_START + 27 )
diff --git a/sc/source/filter/excel/xehelper.cxx 
b/sc/source/filter/excel/xehelper.cxx
index 7ba3fb58c02d..27bcee2fbb67 100644
--- a/sc/source/filter/excel/xehelper.cxx
+++ b/sc/source/filter/excel/xehelper.cxx
@@ -718,8 +718,7 @@ void XclExpHFConverter::AppendPortion( const 
EditTextObject* pTextObj, sal_Unico
     const FontList* pFontList = nullptr;
     if( SfxObjectShell* pDocShell = GetDocShell() )
     {
-        if( const SvxFontListItem* pInfoItem = static_cast< const 
SvxFontListItem* >(
-                pDocShell->GetItem( SID_ATTR_CHAR_FONTLIST ) ) )
+        if( const SvxFontListItem* pInfoItem = pDocShell->GetItem( 
SID_ATTR_CHAR_FONTLIST ) )
             pFontList = pInfoItem->GetFontList();
     }
 
diff --git a/sc/source/filter/excel/xistyle.cxx 
b/sc/source/filter/excel/xistyle.cxx
index 8a60750716c8..2e16bcfd7d1e 100644
--- a/sc/source/filter/excel/xistyle.cxx
+++ b/sc/source/filter/excel/xistyle.cxx
@@ -220,8 +220,7 @@ void XclImpFont::SetFontData( const XclFontData& rFontData, 
bool bHasCharSet )
     {
         if( ScDocShell* pDocShell = GetDocShell() )
         {
-            if( const SvxFontListItem* pInfoItem = static_cast< const 
SvxFontListItem* >(
-                pDocShell->GetItem( SID_ATTR_CHAR_FONTLIST ) ) )
+            if( const SvxFontListItem* pInfoItem = pDocShell->GetItem( 
SID_ATTR_CHAR_FONTLIST ) )
             {
                 if( const FontList* pFontList = pInfoItem->GetFontList() )
                 {
diff --git a/sc/source/ui/attrdlg/attrdlg.cxx b/sc/source/ui/attrdlg/attrdlg.cxx
index 75e751ad31f5..bbf716a1602c 100644
--- a/sc/source/ui/attrdlg/attrdlg.cxx
+++ b/sc/source/ui/attrdlg/attrdlg.cxx
@@ -87,11 +87,11 @@ void ScAttrDlg::PageCreated(const OUString& rPageId, 
SfxTabPage& rTabPage)
     }
     else if (rPageId == "font" && pDocSh)
     {
-        const SfxPoolItem* pInfoItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST 
);
+        const SvxFontListItem* pInfoItem = pDocSh->GetItem( 
SID_ATTR_CHAR_FONTLIST );
         SAL_WARN_IF(!pInfoItem, "sc.ui", "we should have a FontListItem 
normally here");
         if (pInfoItem)
         {
-            aSet.Put (SvxFontListItem(static_cast<const 
SvxFontListItem*>(pInfoItem)->GetFontList(), SID_ATTR_CHAR_FONTLIST ));
+            aSet.Put (SvxFontListItem(pInfoItem->GetFontList(), 
SID_ATTR_CHAR_FONTLIST ));
             rTabPage.PageCreated(aSet);
         }
     }
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx 
b/sc/source/ui/drawfunc/drtxtob.cxx
index 1dd8e2fbde04..558e1a3f462f 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -855,8 +855,7 @@ void ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq )
                 {
                     if (SfxObjectShell* pObjSh = SfxObjectShell::Current())
                     {
-                        const SvxFontListItem* pFontListItem = static_cast< 
const SvxFontListItem* >
-                                ( pObjSh->GetItem( SID_ATTR_CHAR_FONTLIST ) );
+                        const SvxFontListItem* pFontListItem = 
pObjSh->GetItem( SID_ATTR_CHAR_FONTLIST );
                         const FontList* pFontList = pFontListItem ? 
pFontListItem->GetFontList() : nullptr;
                         pOutView->GetEditView().ChangeFontSize( nSlot == 
SID_GROW_FONT_SIZE, pFontList );
                         mrViewData.GetBindings().Invalidate( 
SID_ATTR_CHAR_FONTHEIGHT );
diff --git a/sc/source/ui/miscdlgs/textdlgs.cxx 
b/sc/source/ui/miscdlgs/textdlgs.cxx
index 1e9219234641..d0cf689abb8a 100644
--- a/sc/source/ui/miscdlgs/textdlgs.cxx
+++ b/sc/source/ui/miscdlgs/textdlgs.cxx
@@ -54,8 +54,7 @@ void ScCharDlg::PageCreated(const OUString& rId, SfxTabPage 
&rPage)
     SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
     if (rId == "font")
     {
-        SvxFontListItem aItem(*static_cast<const SvxFontListItem*>(
-            ( m_rDocShell.GetItem( SID_ATTR_CHAR_FONTLIST) ) ) );
+        SvxFontListItem aItem(* m_rDocShell.GetItem( SID_ATTR_CHAR_FONTLIST) );
 
         aSet.Put (SvxFontListItem( aItem.GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
         rPage.PageCreated(aSet);
diff --git a/sc/source/ui/styleui/styledlg.cxx 
b/sc/source/ui/styleui/styledlg.cxx
index 5253a040edd8..b0b5631192ad 100644
--- a/sc/source/ui/styleui/styledlg.cxx
+++ b/sc/source/ui/styleui/styledlg.cxx
@@ -131,12 +131,11 @@ void ScStyleDlg::PageCreated(const OUString& rPageId, 
SfxTabPage& rTabPage)
         }
         else if (rPageId == "font")
         {
-            const SfxPoolItem* pInfoItem
-                = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
+            const SvxFontListItem* pInfoItem = pDocSh->GetItem( 
SID_ATTR_CHAR_FONTLIST );
 
             OSL_ENSURE( pInfoItem, "FontListItem not found!" );
 
-            aSet.Put (SvxFontListItem(static_cast<const 
SvxFontListItem&>(*pInfoItem).GetFontList(), SID_ATTR_CHAR_FONTLIST));
+            aSet.Put (SvxFontListItem(pInfoItem->GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
             rTabPage.PageCreated(aSet);
         }
         else if (rPageId == "background")
@@ -230,8 +229,7 @@ void ScDrawStyleDlg::PageCreated(const OUString& rPageId, 
SfxTabPage& rTabPage)
     {
         if (SfxObjectShell* pDocSh = SfxObjectShell::Current())
         {
-            SvxFontListItem aItem(*static_cast<const SvxFontListItem*>(
-                pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST)));
+            SvxFontListItem aItem(*pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST));
 
             aSet.Put(SvxFontListItem(aItem.GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
         }
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
index 9d5de6cdcab5..ba13c281b10d 100644
--- a/sc/source/ui/view/editsh.cxx
+++ b/sc/source/ui/view/editsh.cxx
@@ -1248,8 +1248,7 @@ void ScEditShell::ExecuteAttr(SfxRequest& rReq)
         case SID_SHRINK_FONT_SIZE:
             {
                 SfxObjectShell* pObjSh = SfxObjectShell::Current();
-                const SvxFontListItem* pFontListItem = static_cast<const 
SvxFontListItem*>
-                        (pObjSh ? pObjSh->GetItem(SID_ATTR_CHAR_FONTLIST) : 
nullptr);
+                const SvxFontListItem* pFontListItem = (pObjSh ? 
pObjSh->GetItem(SID_ATTR_CHAR_FONTLIST) : nullptr);
                 const FontList* pFontList = pFontListItem ? 
pFontListItem->GetFontList() : nullptr;
                 pEditView->ChangeFontSize( nSlot == SID_GROW_FONT_SIZE, 
pFontList );
                 rBindings.Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx 
b/sd/source/ui/animations/CustomAnimationDialog.cxx
index 4467b33d68b6..b6654d6213b9 100644
--- a/sd/source/ui/animations/CustomAnimationDialog.cxx
+++ b/sd/source/ui/animations/CustomAnimationDialog.cxx
@@ -271,9 +271,9 @@ SdFontPropertyBox::SdFontPropertyBox(weld::Label* pLabel, 
weld::Container* pPare
 
     if (SfxObjectShell* pDocSh = SfxObjectShell::Current())
     {
-        auto pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
+        const SvxFontListItem* pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST 
);
         if (pItem)
-            pFontList = static_cast<const 
SvxFontListItem*>(pItem)->GetFontList();
+            pFontList = pItem->GetFontList();
     }
 
     if (!pFontList)
diff --git a/sd/source/ui/dlg/dlgchar.cxx b/sd/source/ui/dlg/dlgchar.cxx
index fce5baf16daa..28d1a638bd9b 100644
--- a/sd/source/ui/dlg/dlgchar.cxx
+++ b/sd/source/ui/dlg/dlgchar.cxx
@@ -58,7 +58,7 @@ void SdCharDlg::PageCreated(const OUString& rId, SfxTabPage 
&rPage)
     SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
     if (rId == "font")
     {
-        SvxFontListItem aItem(* static_cast<const SvxFontListItem*>( 
rDocShell.GetItem( SID_ATTR_CHAR_FONTLIST) ) );
+        SvxFontListItem aItem(* rDocShell.GetItem( SID_ATTR_CHAR_FONTLIST) );
 
         aSet.Put (SvxFontListItem( aItem.GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
         rPage.PageCreated(aSet);
diff --git a/sd/source/ui/dlg/prltempl.cxx b/sd/source/ui/dlg/prltempl.cxx
index b996052a8d61..9b918d2d5baa 100644
--- a/sd/source/ui/dlg/prltempl.cxx
+++ b/sd/source/ui/dlg/prltempl.cxx
@@ -262,7 +262,7 @@ void SdPresLayoutTemplateDlg::PageCreated(const OUString& 
rId, SfxTabPage &rPage
     }
     else if (rId == "font")
     {
-        SvxFontListItem aItem(*static_cast<const 
SvxFontListItem*>(mpDocShell->GetItem( SID_ATTR_CHAR_FONTLIST) ) );
+        SvxFontListItem aItem(*mpDocShell->GetItem( SID_ATTR_CHAR_FONTLIST) );
         aSet.Put (SvxFontListItem( aItem.GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
         rPage.PageCreated(aSet);
     }
diff --git a/sd/source/ui/dlg/tabtempl.cxx b/sd/source/ui/dlg/tabtempl.cxx
index 7699c36a67aa..863588b048bd 100644
--- a/sd/source/ui/dlg/tabtempl.cxx
+++ b/sd/source/ui/dlg/tabtempl.cxx
@@ -128,8 +128,7 @@ void SdTabTemplateDlg::PageCreated(const OUString& rId, 
SfxTabPage &rPage)
     }
     else if (rId == "font")
     {
-        SvxFontListItem aItem(*static_cast<const SvxFontListItem*>(
-            rDocShell.GetItem( SID_ATTR_CHAR_FONTLIST) ) );
+        SvxFontListItem aItem(*rDocShell.GetItem( SID_ATTR_CHAR_FONTLIST));
 
         aSet.Put (SvxFontListItem( aItem.GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
         rPage.PageCreated(aSet);
diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx
index 85abbc5c54e8..dcee114cdbed 100644
--- a/sd/source/ui/view/drtxtob1.cxx
+++ b/sd/source/ui/view/drtxtob1.cxx
@@ -471,7 +471,7 @@ void TextObjectBar::Execute(SfxRequest& rReq)
         case SID_GROW_FONT_SIZE:
         case SID_SHRINK_FONT_SIZE:
         {
-            const SvxFontListItem* pFonts = static_cast<const 
SvxFontListItem*>(mrViewShell.GetDocSh()->GetItem( SID_ATTR_CHAR_FONTLIST ));
+            const SvxFontListItem* pFonts = mrViewShell.GetDocSh()->GetItem( 
SID_ATTR_CHAR_FONTLIST );
             const FontList* pFontList = pFonts ? pFonts->GetFontList(): 
nullptr;
             if( pFontList )
             {
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index d825f69b95b1..c10804ca3e62 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -4534,7 +4534,7 @@ void DrawViewShell::ExecChar( SfxRequest &rReq )
     case SID_SHRINK_FONT_SIZE:
     case SID_GROW_FONT_SIZE:
         {
-            const SvxFontListItem* pFonts = dynamic_cast<const 
SvxFontListItem*>(GetDocSh()->GetItem( SID_ATTR_CHAR_FONTLIST ) );
+            const SvxFontListItem* pFonts = GetDocSh()->GetItem( 
SID_ATTR_CHAR_FONTLIST );
             const FontList* pFontList = pFonts ? pFonts->GetFontList() : 
nullptr;
             if( pFontList )
             {
diff --git a/svx/source/form/fmtextcontrolshell.cxx 
b/svx/source/form/fmtextcontrolshell.cxx
index 7877e460ad2c..72aa41f996e7 100644
--- a/svx/source/form/fmtextcontrolshell.cxx
+++ b/svx/source/form/fmtextcontrolshell.cxx
@@ -613,7 +613,7 @@ namespace svx
 
     void FmTextControlShell::executeAttributeDialog( AttributeSet _eSet, 
SfxRequest& rReq )
     {
-        const SvxFontListItem* pFontList = dynamic_cast<const 
SvxFontListItem*>( m_pViewFrame->GetObjectShell()->GetItem( 
SID_ATTR_CHAR_FONTLIST )  );
+        const SvxFontListItem* pFontList = 
m_pViewFrame->GetObjectShell()->GetItem( SID_ATTR_CHAR_FONTLIST );
         DBG_ASSERT( pFontList, "FmTextControlShell::executeAttributeDialog: no 
font list item!" );
         if ( !pFontList )
             return;
diff --git a/svx/source/sidebar/nbdtmg.cxx b/svx/source/sidebar/nbdtmg.cxx
index ca64c8f1ad68..0c9d9c26b015 100644
--- a/svx/source/sidebar/nbdtmg.cxx
+++ b/svx/source/sidebar/nbdtmg.cxx
@@ -815,7 +815,7 @@ void OutlineTypeMgr::ApplyNumRule(SvxNumRule& aNum, 
sal_uInt16 nIndex, sal_uInt1
                 {
                     if (SfxObjectShell* pCurDocShell = 
SfxObjectShell::Current())
                     {
-                        const SvxFontListItem* pFontListItem = 
static_cast<const 
SvxFontListItem*>(pCurDocShell->GetItem(SID_ATTR_CHAR_FONTLIST));
+                        const SvxFontListItem* pFontListItem = 
pCurDocShell->GetItem(SID_ATTR_CHAR_FONTLIST);
                         pList = pFontListItem ? pFontListItem->GetFontList() : 
nullptr;
                     }
                 }
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 180062bfc2c3..1cd57098bab2 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1659,8 +1659,7 @@ static bool lcl_GetDocFontList(const FontList** 
ppFontList, SvxFontNameBox_Base&
     const SvxFontListItem* pFontListItem = nullptr;
 
     if ( pDocSh )
-        pFontListItem =
-            static_cast<const SvxFontListItem*>(pDocSh->GetItem( 
SID_ATTR_CHAR_FONTLIST ));
+        pFontListItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
     else
     {
         ::std::unique_ptr<FontList> aFontList(new 
FontList(Application::GetDefaultDevice()));
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx 
b/sw/source/core/unocore/unocrsrhelper.cxx
index 6d5aee41481e..1850d9bca749 100644
--- a/sw/source/core/unocore/unocrsrhelper.cxx
+++ b/sw/source/core/unocore/unocrsrhelper.cxx
@@ -891,9 +891,7 @@ void setNumberingProperty(const Any& rValue, SwPaM& rPam)
                     {
                         if (SwDocShell* pShell = rDoc.GetDocShell())
                         {
-                            const SvxFontListItem* pFontListItem =
-                                    static_cast<const SvxFontListItem* >(
-                                                        pShell->GetItem( 
SID_ATTR_CHAR_FONTLIST ));
+                            const SvxFontListItem* pFontListItem = 
pShell->GetItem( SID_ATTR_CHAR_FONTLIST );
                             const FontList* pList = 
pFontListItem->GetFontList();
 
                             vcl::Font aFont(pList->Get(
diff --git a/sw/source/core/unocore/unosett.cxx 
b/sw/source/core/unocore/unosett.cxx
index e6296e5dc54f..7e24c5739a78 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -2000,8 +2000,7 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
             if (!sBulletFontName.isEmpty() && pLclDocShell)
             {
                 const SvxFontListItem* pFontListItem =
-                        static_cast<const SvxFontListItem* >(pLclDocShell
-                                            ->GetItem( SID_ATTR_CHAR_FONTLIST 
));
+                        pLclDocShell->GetItem( SID_ATTR_CHAR_FONTLIST );
                 const FontList*  pList = pFontListItem->GetFontList();
                 vcl::Font aFont(pList->Get(sBulletFontName, WEIGHT_NORMAL, 
ITALIC_NONE));
                 aFormat.SetBulletFont(&aFont);
diff --git a/sw/source/core/unocore/unostyle.cxx 
b/sw/source/core/unocore/unostyle.cxx
index 41aaddc3d1ea..8ddf16e7a0c0 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -1758,7 +1758,7 @@ void SwXStyle::SetPropertyValue<FN_UNO_NUM_RULES>(const 
SfxItemPropertyMapEntry&
         {
             if (SwDocShell* pShell = m_pDoc->GetDocShell())
             {
-                const auto pFontListItem(static_cast<const 
SvxFontListItem*>(pShell->GetItem(SID_ATTR_CHAR_FONTLIST)));
+                const SvxFontListItem* 
pFontListItem(pShell->GetItem(SID_ATTR_CHAR_FONTLIST));
                 const auto pList(pFontListItem->GetFontList());
                 vcl::Font aFont(pList->Get(rBulletName.toString(), 
WEIGHT_NORMAL, ITALIC_NONE));
                 aFormat.SetBulletFont(&aFont);
diff --git a/sw/source/filter/html/htmlcss1.cxx 
b/sw/source/filter/html/htmlcss1.cxx
index 3d0793f4ae13..4d98765d65b9 100644
--- a/sw/source/filter/html/htmlcss1.cxx
+++ b/sw/source/filter/html/htmlcss1.cxx
@@ -1106,8 +1106,7 @@ const FontList *SwCSS1Parser::GetFontList() const
     SwDocShell *pDocSh = m_pDoc->GetDocShell();
     if( pDocSh )
     {
-        const SvxFontListItem *pFListItem =
-            static_cast<const SvxFontListItem 
*>(pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST));
+        const SvxFontListItem *pFListItem = 
pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST);
         if( pFListItem )
             pFList = pFListItem->GetFontList();
     }
diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx
index b885d4a21685..ac1e566e3669 100644
--- a/sw/source/filter/html/swhtml.cxx
+++ b/sw/source/filter/html/swhtml.cxx
@@ -3856,8 +3856,7 @@ void SwHTMLParser::NewFontAttr( HtmlTokenId nToken )
         SwDocShell *pDocSh = m_xDoc->GetDocShell();
         if( pDocSh )
         {
-            const SvxFontListItem *pFListItem =
-               static_cast<const SvxFontListItem 
*>(pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST));
+            const SvxFontListItem *pFListItem = 
pDocSh->GetItem(SID_ATTR_CHAR_FONTLIST);
             if( pFListItem )
                 pFList = pFListItem->GetFontList();
         }
diff --git a/sw/source/ui/chrdlg/chardlg.cxx b/sw/source/ui/chrdlg/chardlg.cxx
index d23784fae59d..8c1995c9a4d0 100644
--- a/sw/source/ui/chrdlg/chardlg.cxx
+++ b/sw/source/ui/chrdlg/chardlg.cxx
@@ -88,8 +88,7 @@ void SwCharDlg::PageCreated(const OUString& rId, SfxTabPage 
&rPage)
     SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
     if (rId == "font")
     {
-        SvxFontListItem aFontListItem( *static_cast<const SvxFontListItem*>(
-           ( m_rView.GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) ) ) );
+        SvxFontListItem aFontListItem( *m_rView.GetDocShell()->GetItem( 
SID_ATTR_CHAR_FONTLIST ) );
         aSet.Put (SvxFontListItem( aFontListItem.GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
         if(m_nDialogMode != SwCharDlgMode::Draw && m_nDialogMode != 
SwCharDlgMode::Ann)
             aSet.Put (SfxUInt32Item(SID_FLAG_TYPE,SVX_PREVIEW_CHARACTER));
diff --git a/sw/source/ui/fmtui/tmpdlg.cxx b/sw/source/ui/fmtui/tmpdlg.cxx
index 1e0bbff36d15..a8ae6fc61803 100644
--- a/sw/source/ui/fmtui/tmpdlg.cxx
+++ b/sw/source/ui/fmtui/tmpdlg.cxx
@@ -311,8 +311,7 @@ void SwTemplateDlgController::PageCreated(const OUString& 
rId, SfxTabPage &rPage
     {
         if (SwView* pView = GetActiveView())
         {
-            SvxFontListItem aFontListItem( *static_cast<const 
SvxFontListItem*>(pView->
-                GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) ) );
+            SvxFontListItem aFontListItem( *(pView->GetDocShell()->GetItem( 
SID_ATTR_CHAR_FONTLIST )) );
 
             aSet.Put (SvxFontListItem( aFontListItem.GetFontList(), 
SID_ATTR_CHAR_FONTLIST));
             sal_uInt32 nFlags = 0;
diff --git a/sw/source/uibase/dialog/watermarkdialog.cxx 
b/sw/source/uibase/dialog/watermarkdialog.cxx
index a4fc7959ea38..b91326ae09e9 100644
--- a/sw/source/uibase/dialog/watermarkdialog.cxx
+++ b/sw/source/uibase/dialog/watermarkdialog.cxx
@@ -60,12 +60,12 @@ void SwWatermarkDialog::InitFields()
 {
     // Update font list
     SfxObjectShell* pDocSh = SfxObjectShell::Current();
-    const SfxPoolItem* pFontItem;
+    const SvxFontListItem* pFontItem;
     const FontList* pFontList = nullptr;
     std::unique_ptr<FontList> xFontList;
 
     if ( pDocSh && ( ( pFontItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST ) ) 
!= nullptr ) )
-        pFontList = static_cast<const SvxFontListItem*>( pFontItem 
)->GetFontList();
+        pFontList = pFontItem->GetFontList();
 
     if (!pFontList)
     {
diff --git a/sw/source/uibase/docvw/srcedtw.cxx 
b/sw/source/uibase/docvw/srcedtw.cxx
index 8f6224682a61..9df4e07f47ea 100644
--- a/sw/source/uibase/docvw/srcedtw.cxx
+++ b/sw/source/uibase/docvw/srcedtw.cxx
@@ -952,7 +952,7 @@ void SwSrcEditWindow::SetFont()
         sFontName = aFont.GetFamilyName();
     }
     const SvxFontListItem* pFontListItem =
-        static_cast<const SvxFontListItem* 
>(m_pSrcView->GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ));
+        m_pSrcView->GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST );
     const FontList* pList = pFontListItem->GetFontList();
     vcl::Font aFont(pList->Get(sFontName, WEIGHT_NORMAL, ITALIC_NONE));
 
diff --git a/sw/source/uibase/shells/annotsh.cxx 
b/sw/source/uibase/shells/annotsh.cxx
index b71aecd2f9e7..e946d15c4306 100644
--- a/sw/source/uibase/shells/annotsh.cxx
+++ b/sw/source/uibase/shells/annotsh.cxx
@@ -229,8 +229,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
         case FN_SHRINK_FONT_SIZE:
         {
             const SfxObjectShell* pObjSh = SfxObjectShell::Current();
-            const SvxFontListItem* pFontListItem = static_cast<const 
SvxFontListItem*>
-                    (pObjSh ? pObjSh->GetItem(SID_ATTR_CHAR_FONTLIST) : 
nullptr);
+            const SvxFontListItem* pFontListItem = (pObjSh ? 
pObjSh->GetItem(SID_ATTR_CHAR_FONTLIST) : nullptr);
             const FontList* pFontList = pFontListItem ? 
pFontListItem->GetFontList() : nullptr;
             pOLV->GetEditView().ChangeFontSize( nSlot == FN_GROW_FONT_SIZE, 
pFontList );
         }
diff --git a/sw/source/uibase/shells/drwtxtex.cxx 
b/sw/source/uibase/shells/drwtxtex.cxx
index a209877f1286..1924f8da68bc 100644
--- a/sw/source/uibase/shells/drwtxtex.cxx
+++ b/sw/source/uibase/shells/drwtxtex.cxx
@@ -649,8 +649,7 @@ void SwDrawTextShell::Execute( SfxRequest &rReq )
         case FN_SHRINK_FONT_SIZE:
         {
             const SfxObjectShell* pObjSh = SfxObjectShell::Current();
-            const SvxFontListItem* pFontListItem = static_cast< const 
SvxFontListItem* >
-                    (pObjSh ? pObjSh->GetItem(SID_ATTR_CHAR_FONTLIST) : 
nullptr);
+            const SvxFontListItem* pFontListItem = (pObjSh ? 
pObjSh->GetItem(SID_ATTR_CHAR_FONTLIST) : nullptr);
             const FontList* pFontList = pFontListItem ? 
pFontListItem->GetFontList() : nullptr;
             pOLV->GetEditView().ChangeFontSize( nSlot == FN_GROW_FONT_SIZE, 
pFontList );
         }

Reply via email to