basctl/source/dlged/dlged.cxx                                     |    1 
 chart2/source/controller/drawinglayer/ViewElementListProvider.cxx |    1 
 chart2/source/controller/main/DrawCommandDispatch.cxx             |    2 
 chart2/source/view/main/ChartItemPool.cxx                         |  310 ++--
 chart2/source/view/main/ChartItemPool.hxx                         |    3 
 chart2/source/view/main/DrawModelWrapper.cxx                      |    1 
 cui/qa/unit/cui-dialogs-test.cxx                                  |    1 
 cui/source/tabpages/tpline.cxx                                    |    2 
 dbaccess/source/ui/dlg/dbadmin.cxx                                |  264 +--
 dbaccess/source/ui/inc/dbadmin.hxx                                |    4 
 dbaccess/source/ui/inc/unoadmin.hxx                               |    3 
 dbaccess/source/ui/misc/UITools.cxx                               |   47 
 dbaccess/source/ui/uno/unoadmin.cxx                               |    7 
 editeng/inc/editdoc.hxx                                           |    2 
 editeng/inc/eerdll2.hxx                                           |   13 
 editeng/source/editeng/editdoc.cxx                                |   68 
 editeng/source/editeng/eerdll.cxx                                 |  213 +-
 extensions/source/propctrlr/controlfontdialog.cxx                 |    7 
 extensions/source/propctrlr/controlfontdialog.hxx                 |    3 
 extensions/source/propctrlr/fontdialog.cxx                        |  136 -
 extensions/source/propctrlr/fontdialog.hxx                        |    4 
 extensions/source/propctrlr/formcomponenthandler.cxx              |    5 
 forms/source/richtext/richtextengine.cxx                          |    2 
 include/editeng/eerdll.hxx                                        |    3 
 include/svl/itempool.hxx                                          |  158 +-
 include/svl/poolitem.hxx                                          |   26 
 include/svx/svdpool.hxx                                           |    8 
 include/svx/xpool.hxx                                             |   51 
 reportdesign/source/core/api/ReportDefinition.cxx                 |    1 
 reportdesign/source/ui/misc/UITools.cxx                           |  263 +--
 reportdesign/source/ui/report/ReportController.cxx                |  202 +-
 reportdesign/source/ui/report/ReportSection.cxx                   |    3 
 sc/source/core/data/docpool.cxx                                   |  394 ++---
 sc/source/core/data/drwlayer.cxx                                  |    2 
 sc/source/core/data/poolhelp.cxx                                  |    4 
 sc/source/filter/rtf/eeimpars.cxx                                 |    1 
 sc/source/ui/Accessibility/AccessibleText.cxx                     |    4 
 sc/source/ui/app/msgpool.cxx                                      |   73 
 sc/source/ui/app/scmod.cxx                                        |    1 
 sc/source/ui/drawfunc/fuconcustomshape.cxx                        |    2 
 sc/source/ui/inc/msgpool.hxx                                      |   12 
 sc/source/ui/unoobj/editsrc.cxx                                   |    1 
 sc/source/ui/unoobj/textuno.cxx                                   |    4 
 sc/source/ui/view/notemark.cxx                                    |    1 
 sd/source/core/drawdoc.cxx                                        |    1 
 sd/source/ui/func/fuconcs.cxx                                     |    2 
 sfx2/source/explorer/nochaos.cxx                                  |   95 -
 solenv/clang-format/excludelist                                   |    1 
 svl/qa/unit/items/stylepool.cxx                                   |   43 
 svl/source/items/itempool.cxx                                     |  746 
++++------
 svl/source/items/itemset.cxx                                      |   42 
 svl/source/items/poolitem.cxx                                     |    1 
 svx/Library_svxcore.mk                                            |    1 
 svx/qa/unit/svdraw.cxx                                            |    6 
 svx/source/dialog/dlgctl3d.cxx                                    |    1 
 svx/source/dialog/dlgctrl.cxx                                     |    2 
 svx/source/dialog/graphctl.cxx                                    |    1 
 svx/source/dialog/imapwnd.cxx                                     |   26 
 svx/source/dialog/imapwnd.hxx                                     |    1 
 svx/source/form/fmtextcontrolshell.cxx                            |    1 
 svx/source/svdraw/svdattr.cxx                                     |  640 
+++++---
 svx/source/svdraw/svdobj.cxx                                      |    1 
 svx/source/tbxctrls/fontworkgallery.cxx                           |    1 
 svx/source/toolbars/fontworkbar.cxx                               |    2 
 svx/source/unodraw/unopool.cxx                                    |    1 
 svx/source/unogallery/unogalitem.cxx                              |    2 
 svx/source/xoutdev/xpool.cxx                                      |  241 ---
 sw/inc/fmtfld.hxx                                                 |    2 
 sw/inc/hintids.hxx                                                |    3 
 sw/inc/init.hxx                                                   |    2 
 sw/inc/tox.hxx                                                    |    2 
 sw/source/core/attr/hints.cxx                                     |   21 
 sw/source/core/attr/swatrset.cxx                                  |   27 
 sw/source/core/bastyp/init.cxx                                    |  626 
+++-----
 sw/source/core/doc/docnew.cxx                                     |   19 
 sw/source/core/frmedt/fecopy.cxx                                  |    2 
 sw/source/uibase/ribbar/concustomshape.cxx                        |    2 
 77 files changed, 2127 insertions(+), 2750 deletions(-)

New commits:
commit ca3c6d468f68af1506bf4e56b47655e5d56306a8
Author:     Armin Le Grand (allotropia) <armin.le.grand.ext...@allotropia.de>
AuthorDate: Fri Feb 9 11:13:58 2024 +0100
Commit:     Armin Le Grand <armin.le.gr...@me.com>
CommitDate: Mon Feb 12 10:35:33 2024 +0100

    ITEM: ItemPool Rework (I)
    
    Driving forward the Item reworks I now take the
    ItemPool in focus: It now does not hold any items
    anymore and should be renamed to something like
    ItemInfoProvider/ItemHelper, since it's main purpose
    is to provide the Defaults for the Item functionality.
    
    There is that SfxItemInfo, only a struct and bundling
    SlotID and ItemFlags. There are also the DefaultItems,
    just handled as ptrs in an array. It is/was always
    error-prone to keep these in sync. Remember that it's
    also necessary for the order to not only being sorted
    but being increments of one with no gaps allowed in
    the WhichIDs to which the Items are bound.
    
    I now bundled that to a new class ItemInfo that joins
    WhichID, SlotID, ItemFlags and the default Item. This
    is a pure virtual base class, it comes in three
    derivations:
    
    (1) ItemInfoStatic:
    This is supposed to be global static and hosts the
    Item in a std::unique_ptr to ensure cleanup. It is
    designed to be constructed once during runtime and
    being shared globally. It allows the ItemPtr to be
    nullptr to mark as non-static (if initial static is
    not possible for some reason) but still offers the
    needed data. Most cases (95%+) are of that case.
    The contained Item is owned by that instance. The
    flag isStaticDefault() is set at the Item.
    
    (2) ItemInfoDynamic:
    This is supposed to be used for cases where the Item
    cannot be static: Mainly for SfxSetItem (that needs
    a Pool itself in the contained SfxItemSet, so lifetime
    is bound to that Pool), but other cases showed up in
    the transition. These instances live while the Pool
    lives and get destructed when the Pool goes down.
    Also uses std::unique_ptr for the Item instance for
    as much automated cleanup as possible, the contained
    Item is owned by that instance, the instance by the
    Pool. The flag isDynamicDefault() is set at the Item.
    
    (3) ItemInfoUser:
    This is used for UserDefaults that can be set for
    every ItemInfo entry to 'overshadow' the default
    from the 'outside'. It uses a regular Item and
    the central access methods implCreateItemEntry/
    implCleanupItemEntry to manage the Item instance,
    thus works like a SfxPoolItemHolder. The Item
    instance can be globally shared and re-used even
    when the Pool goes down. Instances belong to the
    Pool and are cleaned up when the Pool goes down.
    This Item does not need any further flag to be
    set.
    
    The ItemInfos are organized using a class
    called ItemInfoPackage:
    
    This bundles groups of ItemInfoStatic to
    functional instances. There are derivations/
    implementations of this e.g. for Writer ItemPool
    bundling all the needed defaults for Writer,
    similar for draw/impress, Calc and other usages.
    
    These ItemInfoPackage can be 'registered' at an
    ItemPool using it's method registerItemInfoPackage.
    This does all the needed stuff to setup that
    group of ItemInfos at the Pool (It even sets
    internal vars First/LastWhich, that info can just
    be derived from the buildup ItemInfo Ptrs).
    
    The ItemInfoPackage has methods 'size()' and
    'getItemInfo(index) to allow looping over it
    and deliver the infos the Pool needs. The
    (forced, pure virtual) overloads of getItemInfo
    in the specific implementations check for the
    ItemPtr being nullptr and create a exclusive
    incarnation of ItemInfoDynamic for the Pool if
    needed, returning that. The Pool owns the
    ItemInfoDynamic incarnations and uses the
    ItemInfoStatic directly. On shutdown it cleans
    up the ItemInfoDynamic as needed.
    
    The ItemInfoUser is used by the Pool when a
    UserDefault is set/used: for SetUserDefaultItem,
    GetUserDefaultItem, ResetUserDefaultItem. It
    is not held in a 2nd list, but directly in the
    list of ItemInfo'ptrs: To keep track of this
    an unordered_map is used that helds the original
    ItemInfo associated with the WhichID. That way
    no two lookups (as before) are needed to get the
    current Pool's default for any WhichID.
    
    The derivations of ItemInfoPackage are
    encapsulated and just allow access to an
    ItemInfoPackage& with a single method as
    return value. All use a static local instance
    of a std::array<ItemInfoStatic, FIXED_SIZE>
    which constructs all ItemInfoStatic and the
    static Item instances - if already possible.
    Sometimes it is necessary to overload the
    constructor to set some static instances
    for Items later than the lib init. These are
    also just marked with nullptr as Item instance.
    Some need to overload getItemInfo to complete
    instances of ItemInfoStatic, if needed, or
    create and deliver instances of ItemInfoDynamic.
    
    The registerItemInfoPackage also offers a
    optional lambda callback: there were two cases
    where local data from the Pool was needed to
    incarnate the item - just add that to the
    call to registerItemInfoPackage if needed,
    see examples in the adapted code.
    
    For the re-use of Items this means that now
    in SfxItemSet/SfxPoolItemHolder *true* static
    Items can and will be used without RefCount
    directly and globally. This is also the case
    for dynamic Items, with the exception of
    differing Pools for SfxSetItems which cannot
    be done.
    
    Future:
    That design is already prepared to allow
    solving that Pool-chaining problem: currently
    there are master/sub-pools and all accesses
    have to traverse that structure before even
    doing anything.
    For the future the idea is more to 'compose'
    a Pool by registering ItemInfoPackages, e.g.
    for Writer pool you may start with SfxItemPool,
    register the writer-specific ItemInfoPackage,
    then the one for DrawingLayer (if needed) and
    the one for EditEngine.
    It should also be possible to get to smaller
    granularities of that packages. Ideas for
    new ones will emerge. We might also think
    about composing Pools which can e.g. run Writer
    and Chart, so allowing to use Chart *without*
    OLE stuff in Writer - just ideas...
    
    More changes:
    - Adapted all stuff, cleaned up old stuff/
      definitions
    - Removed FreezeIdRanges, that can be done
      once per Pool on-demand (and cannot be
      forgotten to be called)
    - Merged XOutdevItemPool with SdrItemPool
      and offered a ItemInfoPackage which joins
      both needed sets of Items
    - All the cleanup hassle with Pools and
      defaults cleaned up
    - Adapted all access methods of the pool
      to use that new stuff. Pool chaining
      currently stays, but I use a central
      method 'getTargetPool' instead of
      recursive calling to get the correct
      Pool for the action
    
    Change-Id: I2b8d3d4c3cc80b1d0d0b3c0f4bd90d7656b4bab7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163157
    Tested-by: Jenkins
    Reviewed-by: Armin Le Grand <armin.le.gr...@me.com>

diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
index 1aa9ca380416..26d15e908761 100644
--- a/basctl/source/dlged/dlged.cxx
+++ b/basctl/source/dlged/dlged.cxx
@@ -203,7 +203,6 @@ DlgEditor::DlgEditor (
     ,mnPaintGuard(0)
     ,m_xDocument( xModel )
 {
-    pDlgEdModel->GetItemPool().FreezeIdRanges();
     pDlgEdView.reset(new DlgEdView(*pDlgEdModel, *rWindow_.GetOutDev(), 
*this));
     pDlgEdModel->SetScaleUnit( MapUnit::Map100thMM );
 
diff --git a/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx 
b/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
index 0b3df1aa22ad..3fd4435d75b7 100644
--- a/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
+++ b/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
@@ -147,7 +147,6 @@ Graphic ViewElementListProvider::GetSymbolGraphic( 
sal_Int32 nStandardSymbol, co
     std::unique_ptr<SdrModel> pModel(
         new SdrModel());
 
-    pModel->GetItemPool().FreezeIdRanges();
     rtl::Reference<SdrPage> pPage = new SdrPage( *pModel, false );
     pPage->SetSize(Size(1000,1000));
     pModel->InsertPage( pPage.get(), 0 );
diff --git a/chart2/source/controller/main/DrawCommandDispatch.cxx 
b/chart2/source/controller/main/DrawCommandDispatch.cxx
index 1446059a0223..5a678ad7e594 100644
--- a/chart2/source/controller/main/DrawCommandDispatch.cxx
+++ b/chart2/source/controller/main/DrawCommandDispatch.cxx
@@ -115,8 +115,6 @@ void DrawCommandDispatch::setAttributes( SdrObject* pObj )
                 if ( aObjList[ i ].equalsIgnoreAsciiCase( m_aCustomShapeType ) 
)
                 {
                     FmFormModel aModel;
-                    SfxItemPool& rPool(aModel.GetItemPool());
-                    rPool.FreezeIdRanges();
 
                     if ( GalleryExplorer::GetSdrObj( GALLERY_THEME_POWERPOINT, 
i, &aModel ) )
                     {
diff --git a/chart2/source/view/main/ChartItemPool.cxx 
b/chart2/source/view/main/ChartItemPool.cxx
index 8b198028baf7..e11e46ba2b8d 100644
--- a/chart2/source/view/main/ChartItemPool.cxx
+++ b/chart2/source/view/main/ChartItemPool.cxx
@@ -47,173 +47,167 @@
 namespace chart
 {
 
-ChartItemPool::ChartItemPool():
-        SfxItemPool( "ChartItemPool" , SCHATTR_START, SCHATTR_END, nullptr, 
nullptr ),
-        pItemInfos(new SfxItemInfo[SCHATTR_END - SCHATTR_START + 1])
+static ItemInfoPackage& getItemInfoPackageChart()
 {
-    /**************************************************************************
-    * PoolDefaults
-    **************************************************************************/
-    std::vector<SfxPoolItem*>* ppPoolDefaults = new 
std::vector<SfxPoolItem*>(SCHATTR_END - SCHATTR_START + 1);
-    std::vector<SfxPoolItem*>& rPoolDefaults = *ppPoolDefaults;
-    rPoolDefaults[SCHATTR_DATADESCR_SHOW_NUMBER    - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_NUMBER);
-    rPoolDefaults[SCHATTR_DATADESCR_SHOW_PERCENTAGE- SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_PERCENTAGE);
-    rPoolDefaults[SCHATTR_DATADESCR_SHOW_CATEGORY  - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_CATEGORY);
-    rPoolDefaults[SCHATTR_DATADESCR_SHOW_SYMBOL    - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_SYMBOL);
-    rPoolDefaults[SCHATTR_DATADESCR_SHOW_DATA_SERIES_NAME - SCHATTR_START] = 
new SfxBoolItem(SCHATTR_DATADESCR_SHOW_DATA_SERIES_NAME);
-    rPoolDefaults[SCHATTR_DATADESCR_WRAP_TEXT      - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATADESCR_WRAP_TEXT);
-    rPoolDefaults[SCHATTR_DATADESCR_SEPARATOR      - SCHATTR_START] = new 
SfxStringItem(SCHATTR_DATADESCR_SEPARATOR," ");
-    rPoolDefaults[SCHATTR_DATADESCR_PLACEMENT      - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_DATADESCR_PLACEMENT,0);
-    rPoolDefaults[SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS - SCHATTR_START] = 
new SfxIntegerListItem(SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS, std::vector < 
sal_Int32 >() );
-    rPoolDefaults[SCHATTR_DATADESCR_NO_PERCENTVALUE    - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATADESCR_NO_PERCENTVALUE);
-    rPoolDefaults[SCHATTR_DATADESCR_CUSTOM_LEADER_LINES - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATADESCR_CUSTOM_LEADER_LINES, true);
-    rPoolDefaults[SCHATTR_PERCENT_NUMBERFORMAT_VALUE  - SCHATTR_START] = new 
SfxUInt32Item(SCHATTR_PERCENT_NUMBERFORMAT_VALUE, 0);
-    rPoolDefaults[SCHATTR_PERCENT_NUMBERFORMAT_SOURCE - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_PERCENT_NUMBERFORMAT_SOURCE);
-
-    //legend
-    rPoolDefaults[SCHATTR_LEGEND_POS               - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_LEGEND_POS, 
sal_Int32(css::chart2::LegendPosition_LINE_END) );
-    rPoolDefaults[SCHATTR_LEGEND_SHOW              - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_LEGEND_SHOW, true);
-    rPoolDefaults[SCHATTR_LEGEND_NO_OVERLAY        - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_LEGEND_NO_OVERLAY, true);
-
-    //text
-    rPoolDefaults[SCHATTR_TEXT_DEGREES             - SCHATTR_START] = new 
SdrAngleItem(SCHATTR_TEXT_DEGREES, 0_deg100);
-    rPoolDefaults[SCHATTR_TEXT_STACKED             - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_TEXT_STACKED,false);
-
-    //statistic
-    rPoolDefaults[SCHATTR_STAT_AVERAGE             - SCHATTR_START] = new 
SfxBoolItem (SCHATTR_STAT_AVERAGE);
-    rPoolDefaults[SCHATTR_STAT_KIND_ERROR          - SCHATTR_START] = new 
SvxChartKindErrorItem (SvxChartKindError::NONE, SCHATTR_STAT_KIND_ERROR);
-    rPoolDefaults[SCHATTR_STAT_PERCENT             - SCHATTR_START] = new 
SvxDoubleItem (0.0, SCHATTR_STAT_PERCENT);
-    rPoolDefaults[SCHATTR_STAT_BIGERROR            - SCHATTR_START] = new 
SvxDoubleItem (0.0, SCHATTR_STAT_BIGERROR);
-    rPoolDefaults[SCHATTR_STAT_CONSTPLUS           - SCHATTR_START] = new 
SvxDoubleItem (0.0, SCHATTR_STAT_CONSTPLUS);
-    rPoolDefaults[SCHATTR_STAT_CONSTMINUS          - SCHATTR_START] = new 
SvxDoubleItem (0.0, SCHATTR_STAT_CONSTMINUS);
-    rPoolDefaults[SCHATTR_STAT_INDICATE            - SCHATTR_START] = new 
SvxChartIndicateItem (SvxChartIndicate::NONE, SCHATTR_STAT_INDICATE);
-    rPoolDefaults[SCHATTR_STAT_RANGE_POS           - SCHATTR_START] = new 
SfxStringItem (SCHATTR_STAT_RANGE_POS, OUString());
-    rPoolDefaults[SCHATTR_STAT_RANGE_NEG           - SCHATTR_START] = new 
SfxStringItem (SCHATTR_STAT_RANGE_NEG, OUString());
-    rPoolDefaults[SCHATTR_STAT_ERRORBAR_TYPE       - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_STAT_ERRORBAR_TYPE, true);
-
-    rPoolDefaults[SCHATTR_STYLE_DEEP     - SCHATTR_START] = new SfxBoolItem 
(SCHATTR_STYLE_DEEP, false);
-    rPoolDefaults[SCHATTR_STYLE_3D       - SCHATTR_START] = new SfxBoolItem 
(SCHATTR_STYLE_3D, false);
-    rPoolDefaults[SCHATTR_STYLE_VERTICAL - SCHATTR_START] = new SfxBoolItem 
(SCHATTR_STYLE_VERTICAL, false);
-    rPoolDefaults[SCHATTR_STYLE_BASETYPE - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_STYLE_BASETYPE, 0);
-    rPoolDefaults[SCHATTR_STYLE_LINES    - SCHATTR_START] = new SfxBoolItem 
(SCHATTR_STYLE_LINES, false);
-    rPoolDefaults[SCHATTR_STYLE_PERCENT  - SCHATTR_START] = new SfxBoolItem 
(SCHATTR_STYLE_PERCENT, false);
-    rPoolDefaults[SCHATTR_STYLE_STACKED  - SCHATTR_START] = new SfxBoolItem 
(SCHATTR_STYLE_STACKED, false);
-    rPoolDefaults[SCHATTR_STYLE_SPLINES  - SCHATTR_START] = new SfxInt32Item 
(SCHATTR_STYLE_SPLINES, 0); //Bug: was Bool! test ->Fileformat (touches only 
5's)
-    rPoolDefaults[SCHATTR_STYLE_SYMBOL   - SCHATTR_START] = new SfxInt32Item 
(SCHATTR_STYLE_SYMBOL, 0);
-    rPoolDefaults[SCHATTR_STYLE_SHAPE    - SCHATTR_START] = new SfxInt32Item 
(SCHATTR_STYLE_SHAPE, 0);
-
-    rPoolDefaults[SCHATTR_AXIS             - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS,2); //2 = Y-Axis!!!
-
-    //axis scale
-    rPoolDefaults[SCHATTR_AXISTYPE             - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXISTYPE, CHART_AXIS_REALNUMBER);
-    rPoolDefaults[SCHATTR_AXIS_REVERSE         - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_REVERSE,false);
-    rPoolDefaults[SCHATTR_AXIS_AUTO_MIN        - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_AUTO_MIN);
-    rPoolDefaults[SCHATTR_AXIS_MIN             - SCHATTR_START] = new 
SvxDoubleItem(0.0, SCHATTR_AXIS_MIN);
-    rPoolDefaults[SCHATTR_AXIS_AUTO_MAX        - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_AUTO_MAX);
-    rPoolDefaults[SCHATTR_AXIS_MAX             - SCHATTR_START] = new 
SvxDoubleItem(0.0, SCHATTR_AXIS_MAX);
-    rPoolDefaults[SCHATTR_AXIS_AUTO_STEP_MAIN  - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_MAIN);
-    rPoolDefaults[SCHATTR_AXIS_STEP_MAIN       - SCHATTR_START] = new 
SvxDoubleItem(0.0, SCHATTR_AXIS_STEP_MAIN);
-    rPoolDefaults[SCHATTR_AXIS_MAIN_TIME_UNIT  - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_MAIN_TIME_UNIT,2);
-    rPoolDefaults[SCHATTR_AXIS_AUTO_STEP_HELP  - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_HELP);
-    rPoolDefaults[SCHATTR_AXIS_STEP_HELP       - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_STEP_HELP,0);
-    rPoolDefaults[SCHATTR_AXIS_HELP_TIME_UNIT  - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_HELP_TIME_UNIT,2);
-    rPoolDefaults[SCHATTR_AXIS_AUTO_TIME_RESOLUTION    - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_AUTO_TIME_RESOLUTION);
-    rPoolDefaults[SCHATTR_AXIS_TIME_RESOLUTION - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_TIME_RESOLUTION,2);
-    rPoolDefaults[SCHATTR_AXIS_LOGARITHM       - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_LOGARITHM);
-    rPoolDefaults[SCHATTR_AXIS_AUTO_DATEAXIS       - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_AUTO_DATEAXIS);
-    rPoolDefaults[SCHATTR_AXIS_ALLOW_DATEAXIS      - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_ALLOW_DATEAXIS);
-    rPoolDefaults[SCHATTR_AXIS_AUTO_ORIGIN     - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_AUTO_ORIGIN);
-    rPoolDefaults[SCHATTR_AXIS_ORIGIN          - SCHATTR_START] = new 
SvxDoubleItem(0.0, SCHATTR_AXIS_ORIGIN);
-
-    //axis position
-    rPoolDefaults[SCHATTR_AXIS_TICKS           - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_TICKS,CHAXIS_MARK_OUTER);
-    rPoolDefaults[SCHATTR_AXIS_HELPTICKS       - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_HELPTICKS,0);
-    rPoolDefaults[SCHATTR_AXIS_POSITION        - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_POSITION,0);
-    rPoolDefaults[SCHATTR_AXIS_POSITION_VALUE  - SCHATTR_START] = new 
SvxDoubleItem(0.0, SCHATTR_AXIS_POSITION_VALUE);
-    rPoolDefaults[SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT - 
SCHATTR_START] = new 
SfxUInt32Item(SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT,0);
-    rPoolDefaults[SCHATTR_AXIS_SHIFTED_CATEGORY_POSITION - SCHATTR_START] = 
new SfxBoolItem(SCHATTR_AXIS_SHIFTED_CATEGORY_POSITION,false);
-    rPoolDefaults[SCHATTR_AXIS_LABEL_POSITION  - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_LABEL_POSITION,0);
-    rPoolDefaults[SCHATTR_AXIS_MARK_POSITION   - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_MARK_POSITION,0);
-
-    //axis label
-    rPoolDefaults[SCHATTR_AXIS_SHOWDESCR       - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_SHOWDESCR,false);
-    rPoolDefaults[SCHATTR_AXIS_LABEL_ORDER     - SCHATTR_START] = new 
SvxChartTextOrderItem(SvxChartTextOrder::SideBySide, SCHATTR_AXIS_LABEL_ORDER);
-    rPoolDefaults[SCHATTR_AXIS_LABEL_OVERLAP   - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_LABEL_OVERLAP,false);
-    rPoolDefaults[SCHATTR_AXIS_LABEL_BREAK     - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_AXIS_LABEL_BREAK, false );
-
-    rPoolDefaults[SCHATTR_SYMBOL_BRUSH         - SCHATTR_START] = new 
SvxBrushItem(SCHATTR_SYMBOL_BRUSH);
-    rPoolDefaults[SCHATTR_STOCK_VOLUME         - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_STOCK_VOLUME,false);
-    rPoolDefaults[SCHATTR_STOCK_UPDOWN         - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_STOCK_UPDOWN,false);
-    rPoolDefaults[SCHATTR_SYMBOL_SIZE          - SCHATTR_START] = new 
SvxSizeItem(SCHATTR_SYMBOL_SIZE,Size(0,0));
-    rPoolDefaults[SCHATTR_HIDE_DATA_POINT_LEGEND_ENTRY - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_HIDE_DATA_POINT_LEGEND_ENTRY, false);
-
-    // new for New Chart
-    rPoolDefaults[SCHATTR_BAR_OVERLAP          - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_BAR_OVERLAP,0);
-    rPoolDefaults[SCHATTR_BAR_GAPWIDTH         - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_BAR_GAPWIDTH,0);
-    rPoolDefaults[SCHATTR_BAR_CONNECT          - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_BAR_CONNECT, false);
-    rPoolDefaults[SCHATTR_NUM_OF_LINES_FOR_BAR - SCHATTR_START] = new 
SfxInt32Item( SCHATTR_NUM_OF_LINES_FOR_BAR, 0 );
-    rPoolDefaults[SCHATTR_SPLINE_ORDER         - SCHATTR_START] = new 
SfxInt32Item( SCHATTR_SPLINE_ORDER, 3 );
-    rPoolDefaults[SCHATTR_SPLINE_RESOLUTION    - SCHATTR_START] = new 
SfxInt32Item( SCHATTR_SPLINE_RESOLUTION, 20 );
-    rPoolDefaults[SCHATTR_GROUP_BARS_PER_AXIS  - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_GROUP_BARS_PER_AXIS, false);
-    rPoolDefaults[SCHATTR_STARTING_ANGLE       - SCHATTR_START] = new 
SdrAngleItem( SCHATTR_STARTING_ANGLE, 9000_deg100 );
-    rPoolDefaults[SCHATTR_CLOCKWISE            - SCHATTR_START] = new 
SfxBoolItem( SCHATTR_CLOCKWISE, false );
-
-    rPoolDefaults[SCHATTR_MISSING_VALUE_TREATMENT    - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_MISSING_VALUE_TREATMENT, 0);
-    rPoolDefaults[SCHATTR_AVAILABLE_MISSING_VALUE_TREATMENTS - SCHATTR_START] 
= new SfxIntegerListItem(SCHATTR_AVAILABLE_MISSING_VALUE_TREATMENTS, 
std::vector < sal_Int32 >() );
-    rPoolDefaults[SCHATTR_INCLUDE_HIDDEN_CELLS - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_INCLUDE_HIDDEN_CELLS, true);
-    rPoolDefaults[SCHATTR_HIDE_LEGEND_ENTRY - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_HIDE_LEGEND_ENTRY, false);
-
-    rPoolDefaults[SCHATTR_AXIS_FOR_ALL_SERIES  - SCHATTR_START] = new 
SfxInt32Item(SCHATTR_AXIS_FOR_ALL_SERIES, 0);
-
-    rPoolDefaults[SCHATTR_REGRESSION_TYPE                  - SCHATTR_START] = 
new SvxChartRegressItem  (SvxChartRegress::NONE, SCHATTR_REGRESSION_TYPE);
-    rPoolDefaults[SCHATTR_REGRESSION_SHOW_EQUATION         - SCHATTR_START] = 
new SfxBoolItem(SCHATTR_REGRESSION_SHOW_EQUATION, false);
-    rPoolDefaults[SCHATTR_REGRESSION_SHOW_COEFF            - SCHATTR_START] = 
new SfxBoolItem(SCHATTR_REGRESSION_SHOW_COEFF, false);
-    rPoolDefaults[SCHATTR_REGRESSION_DEGREE                - SCHATTR_START] = 
new SfxInt32Item(SCHATTR_REGRESSION_DEGREE, 2);
-    rPoolDefaults[SCHATTR_REGRESSION_PERIOD                - SCHATTR_START] = 
new SfxInt32Item(SCHATTR_REGRESSION_PERIOD, 2);
-    rPoolDefaults[SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD   - SCHATTR_START] = 
new SvxDoubleItem(0.0, SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD);
-    rPoolDefaults[SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD  - SCHATTR_START] = 
new SvxDoubleItem(0.0, SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD);
-    rPoolDefaults[SCHATTR_REGRESSION_SET_INTERCEPT         - SCHATTR_START] = 
new SfxBoolItem(SCHATTR_REGRESSION_SET_INTERCEPT, false);
-    rPoolDefaults[SCHATTR_REGRESSION_INTERCEPT_VALUE       - SCHATTR_START] = 
new SvxDoubleItem(0.0, SCHATTR_REGRESSION_INTERCEPT_VALUE);
-    rPoolDefaults[SCHATTR_REGRESSION_CURVE_NAME            - SCHATTR_START] = 
new SfxStringItem(SCHATTR_REGRESSION_CURVE_NAME, OUString());
-    rPoolDefaults[SCHATTR_REGRESSION_XNAME                 - SCHATTR_START] = 
new SfxStringItem(SCHATTR_REGRESSION_XNAME, "x");
-    rPoolDefaults[SCHATTR_REGRESSION_YNAME                 - SCHATTR_START] = 
new SfxStringItem(SCHATTR_REGRESSION_YNAME, "f(x)");
-    rPoolDefaults[SCHATTR_REGRESSION_MOVING_TYPE           - SCHATTR_START] = 
new SfxInt32Item(SCHATTR_REGRESSION_MOVING_TYPE, 
css::chart2::MovingAverageType::Prior);
-
-    rPoolDefaults[SCHATTR_DATA_TABLE_HORIZONTAL_BORDER - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, false);
-    rPoolDefaults[SCHATTR_DATA_TABLE_VERTICAL_BORDER   - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATA_TABLE_VERTICAL_BORDER, false);
-    rPoolDefaults[SCHATTR_DATA_TABLE_OUTLINE           - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATA_TABLE_OUTLINE, false);
-    rPoolDefaults[SCHATTR_DATA_TABLE_KEYS              - SCHATTR_START] = new 
SfxBoolItem(SCHATTR_DATA_TABLE_KEYS, false);
-
-    /**************************************************************************
-    * ItemInfos
-    **************************************************************************/
-    const sal_uInt16 nMax = SCHATTR_END - SCHATTR_START + 1;
-    for( sal_uInt16 i = 0; i < nMax; i++ )
+    class ItemInfoPackageChart : public ItemInfoPackage
     {
-        // _nItemInfoSlotID, _nItemInfoFlags
-        pItemInfos[i]._nItemInfoSlotID = 0;
-        pItemInfos[i]._nItemInfoFlags = SFX_ITEMINFOFLAG_NONE;
-    }
-
-    // slot ids differing from which ids
-    pItemInfos[SCHATTR_SYMBOL_BRUSH - SCHATTR_START]._nItemInfoSlotID = 
SID_ATTR_BRUSH;
-    pItemInfos[SCHATTR_STYLE_SYMBOL - SCHATTR_START]._nItemInfoSlotID = 
SID_ATTR_SYMBOLTYPE;
-    pItemInfos[SCHATTR_SYMBOL_SIZE - SCHATTR_START]._nItemInfoSlotID  = 
SID_ATTR_SYMBOLSIZE;
-
-    SetPoolDefaults(ppPoolDefaults);
-    SetItemInfos(pItemInfos.get());
+        typedef std::array<ItemInfoStatic, SCHATTR_END - SCHATTR_START + 1> 
ItemInfoArrayChart;
+        ItemInfoArrayChart maItemInfos {{
+            // m_nWhich, m_pItem, m_nSlotID, m_nItemInfoFlags
+            { SCHATTR_DATADESCR_SHOW_NUMBER, new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_NUMBER), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_SHOW_PERCENTAGE, new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_PERCENTAGE), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_SHOW_CATEGORY, new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_CATEGORY), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_SHOW_SYMBOL, new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_SYMBOL), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_WRAP_TEXT, new 
SfxBoolItem(SCHATTR_DATADESCR_WRAP_TEXT), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_SEPARATOR, new 
SfxStringItem(SCHATTR_DATADESCR_SEPARATOR," "), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_PLACEMENT, new 
SfxInt32Item(SCHATTR_DATADESCR_PLACEMENT,0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS, new 
SfxIntegerListItem(SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS, std::vector < 
sal_Int32 >() ), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_NO_PERCENTVALUE, new 
SfxBoolItem(SCHATTR_DATADESCR_NO_PERCENTVALUE), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_CUSTOM_LEADER_LINES, new 
SfxBoolItem(SCHATTR_DATADESCR_CUSTOM_LEADER_LINES, true), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_PERCENT_NUMBERFORMAT_VALUE, new 
SfxUInt32Item(SCHATTR_PERCENT_NUMBERFORMAT_VALUE, 0), 0, SFX_ITEMINFOFLAG_NONE 
},
+            { SCHATTR_PERCENT_NUMBERFORMAT_SOURCE, new 
SfxBoolItem(SCHATTR_PERCENT_NUMBERFORMAT_SOURCE), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATADESCR_SHOW_DATA_SERIES_NAME, new 
SfxBoolItem(SCHATTR_DATADESCR_SHOW_DATA_SERIES_NAME), 0, SFX_ITEMINFOFLAG_NONE 
},
+
+            //legend
+            { SCHATTR_LEGEND_POS, new SfxInt32Item(SCHATTR_LEGEND_POS, 
sal_Int32(css::chart2::LegendPosition_LINE_END) ), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_LEGEND_SHOW, new SfxBoolItem(SCHATTR_LEGEND_SHOW, true), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_LEGEND_NO_OVERLAY, new 
SfxBoolItem(SCHATTR_LEGEND_NO_OVERLAY, true), 0, SFX_ITEMINFOFLAG_NONE },
+
+            //text
+            { SCHATTR_TEXT_DEGREES, new SdrAngleItem(SCHATTR_TEXT_DEGREES, 
0_deg100), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_TEXT_STACKED, new 
SfxBoolItem(SCHATTR_TEXT_STACKED,false), 0, SFX_ITEMINFOFLAG_NONE },
+
+            //statistic
+            { SCHATTR_STAT_AVERAGE, new SfxBoolItem (SCHATTR_STAT_AVERAGE), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_KIND_ERROR, new SvxChartKindErrorItem 
(SvxChartKindError::NONE, SCHATTR_STAT_KIND_ERROR), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_PERCENT, new SvxDoubleItem (0.0, 
SCHATTR_STAT_PERCENT), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_BIGERROR, new SvxDoubleItem (0.0, 
SCHATTR_STAT_BIGERROR), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_CONSTPLUS, new SvxDoubleItem (0.0, 
SCHATTR_STAT_CONSTPLUS), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_CONSTMINUS, new SvxDoubleItem (0.0, 
SCHATTR_STAT_CONSTMINUS), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_INDICATE, new SvxChartIndicateItem 
(SvxChartIndicate::NONE, SCHATTR_STAT_INDICATE), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_RANGE_POS, new SfxStringItem 
(SCHATTR_STAT_RANGE_POS, OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_RANGE_NEG, new SfxStringItem 
(SCHATTR_STAT_RANGE_NEG, OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STAT_ERRORBAR_TYPE, new 
SfxBoolItem(SCHATTR_STAT_ERRORBAR_TYPE, true), 0, SFX_ITEMINFOFLAG_NONE },
+
+            { SCHATTR_STYLE_DEEP, new SfxBoolItem (SCHATTR_STYLE_DEEP, false), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_3D, new SfxBoolItem (SCHATTR_STYLE_3D, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_VERTICAL, new SfxBoolItem (SCHATTR_STYLE_VERTICAL, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_BASETYPE, new SfxInt32Item(SCHATTR_STYLE_BASETYPE, 
0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_LINES, new SfxBoolItem (SCHATTR_STYLE_LINES, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_PERCENT, new SfxBoolItem (SCHATTR_STYLE_PERCENT, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_STACKED, new SfxBoolItem (SCHATTR_STYLE_STACKED, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_SPLINES, new SfxInt32Item (SCHATTR_STYLE_SPLINES, 
0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_SYMBOL, new SfxInt32Item (SCHATTR_STYLE_SYMBOL, 
0), SID_ATTR_SYMBOLTYPE, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STYLE_SHAPE, new SfxInt32Item (SCHATTR_STYLE_SHAPE, 0), 
0, SFX_ITEMINFOFLAG_NONE },
+
+            { SCHATTR_AXIS, new SfxInt32Item(SCHATTR_AXIS,2), 0, 
SFX_ITEMINFOFLAG_NONE },
+
+            //axis scale
+            { SCHATTR_AXISTYPE, new SfxInt32Item(SCHATTR_AXISTYPE, 
CHART_AXIS_REALNUMBER), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_REVERSE, new 
SfxBoolItem(SCHATTR_AXIS_REVERSE,false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_AUTO_MIN, new SfxBoolItem(SCHATTR_AXIS_AUTO_MIN), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_MIN, new SvxDoubleItem(0.0, SCHATTR_AXIS_MIN), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_AUTO_MAX, new SfxBoolItem(SCHATTR_AXIS_AUTO_MAX), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_MAX, new SvxDoubleItem(0.0, SCHATTR_AXIS_MAX), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_AUTO_STEP_MAIN, new 
SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_MAIN), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_STEP_MAIN, new SvxDoubleItem(0.0, 
SCHATTR_AXIS_STEP_MAIN), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_MAIN_TIME_UNIT, new 
SfxInt32Item(SCHATTR_AXIS_MAIN_TIME_UNIT,2), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_AUTO_STEP_HELP, new 
SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_HELP), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_STEP_HELP, new 
SfxInt32Item(SCHATTR_AXIS_STEP_HELP,0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_HELP_TIME_UNIT, new 
SfxInt32Item(SCHATTR_AXIS_HELP_TIME_UNIT,2), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_AUTO_TIME_RESOLUTION, new 
SfxBoolItem(SCHATTR_AXIS_AUTO_TIME_RESOLUTION), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_TIME_RESOLUTION, new 
SfxInt32Item(SCHATTR_AXIS_TIME_RESOLUTION,2), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_LOGARITHM, new SfxBoolItem(SCHATTR_AXIS_LOGARITHM), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_AUTO_DATEAXIS, new 
SfxBoolItem(SCHATTR_AXIS_AUTO_DATEAXIS), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_ALLOW_DATEAXIS, new 
SfxBoolItem(SCHATTR_AXIS_ALLOW_DATEAXIS), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_AUTO_ORIGIN, new 
SfxBoolItem(SCHATTR_AXIS_AUTO_ORIGIN), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_ORIGIN, new SvxDoubleItem(0.0, 
SCHATTR_AXIS_ORIGIN), 0, SFX_ITEMINFOFLAG_NONE },
+
+            //axis position
+            { SCHATTR_AXIS_TICKS, new 
SfxInt32Item(SCHATTR_AXIS_TICKS,CHAXIS_MARK_OUTER), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_HELPTICKS, new 
SfxInt32Item(SCHATTR_AXIS_HELPTICKS,0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_POSITION, new 
SfxInt32Item(SCHATTR_AXIS_POSITION,0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_POSITION_VALUE, new SvxDoubleItem(0.0, 
SCHATTR_AXIS_POSITION_VALUE), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT, new 
SfxUInt32Item(SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT,0), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_SHIFTED_CATEGORY_POSITION, new 
SfxBoolItem(SCHATTR_AXIS_SHIFTED_CATEGORY_POSITION,false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_LABEL_POSITION, new 
SfxInt32Item(SCHATTR_AXIS_LABEL_POSITION,0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_MARK_POSITION, new 
SfxInt32Item(SCHATTR_AXIS_MARK_POSITION,0), 0, SFX_ITEMINFOFLAG_NONE },
+
+            //axis label
+            { SCHATTR_AXIS_SHOWDESCR, new 
SfxBoolItem(SCHATTR_AXIS_SHOWDESCR,false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_LABEL_ORDER, new 
SvxChartTextOrderItem(SvxChartTextOrder::SideBySide, SCHATTR_AXIS_LABEL_ORDER), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_LABEL_OVERLAP, new 
SfxBoolItem(SCHATTR_AXIS_LABEL_OVERLAP,false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AXIS_LABEL_BREAK, new 
SfxBoolItem(SCHATTR_AXIS_LABEL_BREAK, false ), 0, SFX_ITEMINFOFLAG_NONE },
+
+            { SCHATTR_SYMBOL_BRUSH, new SvxBrushItem(SCHATTR_SYMBOL_BRUSH), 
SID_ATTR_BRUSH, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STOCK_VOLUME, new 
SfxBoolItem(SCHATTR_STOCK_VOLUME,false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STOCK_UPDOWN, new 
SfxBoolItem(SCHATTR_STOCK_UPDOWN,false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_SYMBOL_SIZE, new 
SvxSizeItem(SCHATTR_SYMBOL_SIZE,Size(0,0)), SID_ATTR_SYMBOLSIZE, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_HIDE_DATA_POINT_LEGEND_ENTRY, new 
SfxBoolItem(SCHATTR_HIDE_DATA_POINT_LEGEND_ENTRY, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+
+            // new for New Chart
+            { SCHATTR_BAR_OVERLAP, new SfxInt32Item(SCHATTR_BAR_OVERLAP,0), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_BAR_GAPWIDTH, new SfxInt32Item(SCHATTR_BAR_GAPWIDTH,0), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_BAR_CONNECT, new SfxBoolItem(SCHATTR_BAR_CONNECT, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_NUM_OF_LINES_FOR_BAR, new SfxInt32Item( 
SCHATTR_NUM_OF_LINES_FOR_BAR, 0 ), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_SPLINE_ORDER, new SfxInt32Item( SCHATTR_SPLINE_ORDER, 3 
), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_SPLINE_RESOLUTION, new SfxInt32Item( 
SCHATTR_SPLINE_RESOLUTION, 20 ), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_GROUP_BARS_PER_AXIS, new 
SfxBoolItem(SCHATTR_GROUP_BARS_PER_AXIS, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_STARTING_ANGLE, new SdrAngleItem( 
SCHATTR_STARTING_ANGLE, 9000_deg100 ), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_CLOCKWISE, new SfxBoolItem( SCHATTR_CLOCKWISE, false ), 
0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_MISSING_VALUE_TREATMENT, new 
SfxInt32Item(SCHATTR_MISSING_VALUE_TREATMENT, 0), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_AVAILABLE_MISSING_VALUE_TREATMENTS, new 
SfxIntegerListItem(SCHATTR_AVAILABLE_MISSING_VALUE_TREATMENTS, std::vector < 
sal_Int32 >() ), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_INCLUDE_HIDDEN_CELLS, new 
SfxBoolItem(SCHATTR_INCLUDE_HIDDEN_CELLS, true), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_HIDE_LEGEND_ENTRY, new 
SfxBoolItem(SCHATTR_HIDE_LEGEND_ENTRY, false), 0, SFX_ITEMINFOFLAG_NONE },
+
+            { SCHATTR_AXIS_FOR_ALL_SERIES, new 
SfxInt32Item(SCHATTR_AXIS_FOR_ALL_SERIES, 0), 0, SFX_ITEMINFOFLAG_NONE },
+
+            { SCHATTR_REGRESSION_TYPE, new SvxChartRegressItem  
(SvxChartRegress::NONE, SCHATTR_REGRESSION_TYPE), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_SHOW_EQUATION, new 
SfxBoolItem(SCHATTR_REGRESSION_SHOW_EQUATION, false), 0, SFX_ITEMINFOFLAG_NONE 
},
+            { SCHATTR_REGRESSION_SHOW_COEFF, new 
SfxBoolItem(SCHATTR_REGRESSION_SHOW_COEFF, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_DEGREE, new 
SfxInt32Item(SCHATTR_REGRESSION_DEGREE, 2), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_PERIOD, new 
SfxInt32Item(SCHATTR_REGRESSION_PERIOD, 2), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD, new SvxDoubleItem(0.0, 
SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD, new SvxDoubleItem(0.0, 
SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_SET_INTERCEPT, new 
SfxBoolItem(SCHATTR_REGRESSION_SET_INTERCEPT, false), 0, SFX_ITEMINFOFLAG_NONE 
},
+            { SCHATTR_REGRESSION_INTERCEPT_VALUE, new SvxDoubleItem(0.0, 
SCHATTR_REGRESSION_INTERCEPT_VALUE), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_CURVE_NAME, new 
SfxStringItem(SCHATTR_REGRESSION_CURVE_NAME, OUString()), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_XNAME, new 
SfxStringItem(SCHATTR_REGRESSION_XNAME, "x"), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_YNAME, new 
SfxStringItem(SCHATTR_REGRESSION_YNAME, "f(x)"), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_REGRESSION_MOVING_TYPE, new 
SfxInt32Item(SCHATTR_REGRESSION_MOVING_TYPE, 
css::chart2::MovingAverageType::Prior), 0, SFX_ITEMINFOFLAG_NONE },
+
+            { SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, new 
SfxBoolItem(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATA_TABLE_VERTICAL_BORDER, new 
SfxBoolItem(SCHATTR_DATA_TABLE_VERTICAL_BORDER, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATA_TABLE_OUTLINE, new 
SfxBoolItem(SCHATTR_DATA_TABLE_OUTLINE, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { SCHATTR_DATA_TABLE_KEYS, new 
SfxBoolItem(SCHATTR_DATA_TABLE_KEYS, false), 0, SFX_ITEMINFOFLAG_NONE }
+        }};
+
+    public:
+
+        virtual size_t size() const override { return maItemInfos.size(); }
+        virtual const ItemInfo& getItemInfo(size_t nIndex, SfxItemPool& 
/*rPool*/) override { return maItemInfos[nIndex]; }
+    };
+
+    static std::unique_ptr<ItemInfoPackageChart> g_aItemInfoPackageChart;
+    if (!g_aItemInfoPackageChart)
+        g_aItemInfoPackageChart.reset(new ItemInfoPackageChart);
+    return *g_aItemInfoPackageChart;
 }
 
-ChartItemPool::ChartItemPool(const ChartItemPool& rPool):
-    SfxItemPool(rPool)
+ChartItemPool::ChartItemPool()
+: SfxItemPool("ChartItemPool")
+{
+    registerItemInfoPackage(getItemInfoPackageChart());
+}
+
+ChartItemPool::ChartItemPool(const ChartItemPool& rPool)
+: SfxItemPool(rPool)
 {
 }
 
 ChartItemPool::~ChartItemPool()
 {
-    Delete();
-    // release and delete static pool default items
-    ReleasePoolDefaults(true);
+    sendShutdownHint();
 }
 
 rtl::Reference<SfxItemPool> ChartItemPool::Clone() const
diff --git a/chart2/source/view/main/ChartItemPool.hxx 
b/chart2/source/view/main/ChartItemPool.hxx
index 74a7ab1ebb29..558ab3c6e2fc 100644
--- a/chart2/source/view/main/ChartItemPool.hxx
+++ b/chart2/source/view/main/ChartItemPool.hxx
@@ -26,9 +26,6 @@ namespace chart
 {
 class ChartItemPool : public SfxItemPool
 {
-private:
-    std::unique_ptr<SfxItemInfo[]> pItemInfos;
-
 public:
     ChartItemPool();
     ChartItemPool(const ChartItemPool& rPool);
diff --git a/chart2/source/view/main/DrawModelWrapper.cxx 
b/chart2/source/view/main/DrawModelWrapper.cxx
index a8cfa60d0875..71cd8d699cf7 100644
--- a/chart2/source/view/main/DrawModelWrapper.cxx
+++ b/chart2/source/view/main/DrawModelWrapper.cxx
@@ -57,7 +57,6 @@ DrawModelWrapper::DrawModelWrapper()
 
     // append chart pool to end of pool chain
     
pMasterPool->GetLastPoolInChain()->SetSecondaryPool(m_xChartItemPool.get());
-    pMasterPool->FreezeIdRanges();
     SetTextDefaults();
 
     //this factory needs to be created before first use of 3D scenes once upon 
an office runtime
diff --git a/cui/qa/unit/cui-dialogs-test.cxx b/cui/qa/unit/cui-dialogs-test.cxx
index a6f0b01d1edb..88a1d9b09464 100644
--- a/cui/qa/unit/cui-dialogs-test.cxx
+++ b/cui/qa/unit/cui-dialogs-test.cxx
@@ -50,7 +50,6 @@ void CuiDialogsTest::initialize()
 {
     mpFact = SvxAbstractDialogFactory::Create();
     mxModel.reset(new SdrModel(nullptr, nullptr, true));
-    mxModel->GetItemPool().FreezeIdRanges();
     mxAttr.reset(new SfxItemSet(mxModel->GetItemPool()));
 }
 
diff --git a/cui/source/tabpages/tpline.cxx b/cui/source/tabpages/tpline.cxx
index 37fe8ef913b0..384488deacbb 100644
--- a/cui/source/tabpages/tpline.cxx
+++ b/cui/source/tabpages/tpline.cxx
@@ -818,7 +818,6 @@ void SvxLineTabPage::Reset( const SfxItemSet* rAttrs )
 
         std::unique_ptr<SdrModel> pModel(
             new SdrModel(nullptr, nullptr, true));
-        pModel->GetItemPool().FreezeIdRanges();
         rtl::Reference<SdrPage> pPage = new SdrPage( *pModel, false );
         pPage->SetSize(Size(1000,1000));
         pModel->InsertPage( pPage.get(), 0 );
@@ -1446,7 +1445,6 @@ IMPL_LINK_NOARG(SvxLineTabPage, MenuCreateHdl_Impl, 
weld::Toggleable&, void)
     pVDev->SetMapMode(MapMode(MapUnit::Map100thMM));
     std::unique_ptr<SdrModel> pModel(
         new SdrModel(nullptr, nullptr, true));
-    pModel->GetItemPool().FreezeIdRanges();
     // Page
     rtl::Reference<SdrPage> pPage = new SdrPage( *pModel, false );
     pPage->SetSize(Size(1000,1000));
diff --git a/dbaccess/source/ui/dlg/dbadmin.cxx 
b/dbaccess/source/ui/dlg/dbadmin.cxx
index b1191b53f9a7..ee503f575e95 100644
--- a/dbaccess/source/ui/dlg/dbadmin.cxx
+++ b/dbaccess/source/ui/dlg/dbadmin.cxx
@@ -264,171 +264,133 @@ void ODbAdminDialog::clearPassword()
     m_pImpl->clearPassword();
 }
 
-void ODbAdminDialog::createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults, 
::dbaccess::ODsnTypeCollection* _pTypeCollection)
+static ItemInfoPackage& getItemInfoPackageAdminDlg()
 {
-    // just to be sure...
-    _rpSet = nullptr;
-    _rpPool = nullptr;
-    _rpDefaults = nullptr;
-
-    static constexpr OUString sFilterAll( u"%"_ustr );
-    // create and initialize the defaults
-    _rpDefaults = new std::vector<SfxPoolItem*>(DSID_LAST_ITEM_ID - 
DSID_FIRST_ITEM_ID + 1);
-    SfxPoolItem** pCounter = _rpDefaults->data();  // want to modify this 
without affecting the out param _rppDefaults
-    *pCounter++ = new SfxStringItem(DSID_NAME, OUString());
-    *pCounter++ = new SfxStringItem(DSID_ORIGINALNAME, OUString());
-    *pCounter++ = new SfxStringItem(DSID_CONNECTURL, OUString());
-    *pCounter++ = new OStringListItem(DSID_TABLEFILTER, Sequence< OUString 
>{sFilterAll});
-    *pCounter++ = new DbuTypeCollectionItem(DSID_TYPECOLLECTION, 
_pTypeCollection);
-    *pCounter++ = new SfxBoolItem(DSID_INVALID_SELECTION, false);
-    *pCounter++ = new SfxBoolItem(DSID_READONLY, false);
-    *pCounter++ = new SfxStringItem(DSID_USER, OUString());
-    *pCounter++ = new SfxStringItem(DSID_PASSWORD, OUString());
-    *pCounter++ = new SfxStringItem(DSID_ADDITIONALOPTIONS, OUString());
-    *pCounter++ = new SfxStringItem(DSID_CHARSET, OUString());
-    *pCounter++ = new SfxBoolItem(DSID_PASSWORDREQUIRED, false);
-    *pCounter++ = new SfxBoolItem(DSID_SHOWDELETEDROWS, false);
-    *pCounter++ = new SfxBoolItem(DSID_ALLOWLONGTABLENAMES, false);
-    *pCounter++ = new SfxStringItem(DSID_JDBCDRIVERCLASS, OUString());
-    *pCounter++ = new SfxStringItem(DSID_FIELDDELIMITER, OUString(','));
-    *pCounter++ = new SfxStringItem(DSID_TEXTDELIMITER, OUString('"'));
-    *pCounter++ = new SfxStringItem(DSID_DECIMALDELIMITER, OUString('.'));
-    *pCounter++ = new SfxStringItem(DSID_THOUSANDSDELIMITER, OUString());
-    *pCounter++ = new SfxStringItem(DSID_TEXTFILEEXTENSION, "txt");
-    *pCounter++ = new SfxBoolItem(DSID_TEXTFILEHEADER, true);
-    *pCounter++ = new SfxBoolItem(DSID_PARAMETERNAMESUBST, false);
-    *pCounter++ = new SfxInt32Item(DSID_CONN_PORTNUMBER, 8100);
-    *pCounter++ = new SfxBoolItem(DSID_SUPPRESSVERSIONCL, false);
-    *pCounter++ = new SfxBoolItem(DSID_CONN_SHUTSERVICE, false);
-    *pCounter++ = new SfxInt32Item(DSID_CONN_DATAINC, 20);
-    *pCounter++ = new SfxInt32Item(DSID_CONN_CACHESIZE, 20);
-    *pCounter++ = new SfxStringItem(DSID_CONN_CTRLUSER, OUString());
-    *pCounter++ = new SfxStringItem(DSID_CONN_CTRLPWD, OUString());
-    *pCounter++ = new SfxBoolItem(DSID_USECATALOG, false);
-    *pCounter++ = new SfxStringItem(DSID_CONN_HOSTNAME, OUString());
-    *pCounter++ = new SfxStringItem(DSID_CONN_LDAP_BASEDN, OUString());
-    *pCounter++ = new SfxInt32Item(DSID_CONN_LDAP_PORTNUMBER, 389);
-    *pCounter++ = new SfxInt32Item(DSID_CONN_LDAP_ROWCOUNT, 100);
-    *pCounter++ = new SfxBoolItem(DSID_SQL92CHECK, false);
-    *pCounter++ = new SfxStringItem(DSID_AUTOINCREMENTVALUE, OUString());
-    *pCounter++ = new SfxStringItem(DSID_AUTORETRIEVEVALUE, OUString());
-    *pCounter++ = new SfxBoolItem(DSID_AUTORETRIEVEENABLED, false);
-    *pCounter++ = new SfxBoolItem(DSID_APPEND_TABLE_ALIAS, false);
-    *pCounter++ = new SfxInt32Item(DSID_MYSQL_PORTNUMBER, 3306);
-    *pCounter++ = new SfxBoolItem(DSID_IGNOREDRIVER_PRIV, true);
-    *pCounter++ = new SfxInt32Item(DSID_BOOLEANCOMPARISON, 0);
-    *pCounter++ = new SfxInt32Item(DSID_ORACLE_PORTNUMBER, 1521);
-    *pCounter++ = new SfxBoolItem(DSID_ENABLEOUTERJOIN, true);
-    *pCounter++ = new SfxBoolItem(DSID_CATALOG, true);
-    *pCounter++ = new SfxBoolItem(DSID_SCHEMA, true);
-    *pCounter++ = new SfxBoolItem(DSID_INDEXAPPENDIX, true);
-    *pCounter++ = new SfxBoolItem(DSID_CONN_LDAP_USESSL, false);
-    *pCounter++ = new SfxStringItem(DSID_DOCUMENT_URL, OUString());
-    *pCounter++ = new SfxBoolItem(DSID_DOSLINEENDS, false);
-    *pCounter++ = new SfxStringItem(DSID_DATABASENAME, OUString());
-    *pCounter++ = new SfxBoolItem(DSID_AS_BEFORE_CORRNAME, false);
-    *pCounter++ = new SfxBoolItem(DSID_CHECK_REQUIRED_FIELDS, true);
-    *pCounter++ = new SfxBoolItem(DSID_IGNORECURRENCY, false);
-    *pCounter++ = new SfxStringItem(DSID_CONN_SOCKET, OUString());
-    *pCounter++ = new SfxBoolItem(DSID_ESCAPE_DATETIME, true);
-    *pCounter++ = new SfxStringItem(DSID_NAMED_PIPE, OUString());
-    *pCounter++ = new OptionalBoolItem( DSID_PRIMARY_KEY_SUPPORT );
-    *pCounter++ = new SfxInt32Item(DSID_MAX_ROW_SCAN, 100);
-    *pCounter++ = new SfxBoolItem( DSID_RESPECTRESULTSETTYPE,false );
-    *pCounter++ = new SfxInt32Item(DSID_POSTGRES_PORTNUMBER, 5432);
-
-    // create the pool
-    static SfxItemInfo const aItemInfos[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID 
+ 1] =
+    class ItemInfoPackageAdminDlg : public ItemInfoPackage
     {
-        // _nItemInfoSlotID, _nItemInfoFlags
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
-        {0, SFX_ITEMINFOFLAG_NONE },
+        typedef std::array<ItemInfoStatic, DSID_LAST_ITEM_ID - 
DSID_FIRST_ITEM_ID + 1> ItemInfoArrayAdminDlg;
+        ItemInfoArrayAdminDlg maItemInfos {{
+            // m_nWhich, m_pItem, m_nSlotID, m_nItemInfoFlags
+            { DSID_NAME, new SfxStringItem(DSID_NAME, OUString()), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_ORIGINALNAME, new SfxStringItem(DSID_ORIGINALNAME, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONNECTURL, new SfxStringItem(DSID_CONNECTURL, OUString()), 
0, SFX_ITEMINFOFLAG_NONE },
+
+            // gets added in costructor below once for LO runtime as static 
default
+            { DSID_TABLEFILTER, nullptr, 0, SFX_ITEMINFOFLAG_NONE },
+
+            // gets added by callback for each new Pool as dynamic default
+            { DSID_TYPECOLLECTION, nullptr, 0, SFX_ITEMINFOFLAG_NONE },
+
+            { DSID_INVALID_SELECTION, new SfxBoolItem(DSID_INVALID_SELECTION, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_READONLY, new SfxBoolItem(DSID_READONLY, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_USER, new SfxStringItem(DSID_USER, OUString()), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_PASSWORD, new SfxStringItem(DSID_PASSWORD, OUString()), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_ADDITIONALOPTIONS, new 
SfxStringItem(DSID_ADDITIONALOPTIONS, OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CHARSET, new SfxStringItem(DSID_CHARSET, OUString()), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_PASSWORDREQUIRED, new SfxBoolItem(DSID_PASSWORDREQUIRED, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_SHOWDELETEDROWS, new SfxBoolItem(DSID_SHOWDELETEDROWS, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_ALLOWLONGTABLENAMES, new 
SfxBoolItem(DSID_ALLOWLONGTABLENAMES, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_JDBCDRIVERCLASS, new SfxStringItem(DSID_JDBCDRIVERCLASS, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_FIELDDELIMITER, new SfxStringItem(DSID_FIELDDELIMITER, 
OUString(',')), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_TEXTDELIMITER, new SfxStringItem(DSID_TEXTDELIMITER, 
OUString('"')), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_DECIMALDELIMITER, new SfxStringItem(DSID_DECIMALDELIMITER, 
OUString('.')), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_THOUSANDSDELIMITER, new 
SfxStringItem(DSID_THOUSANDSDELIMITER, OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_TEXTFILEEXTENSION, new 
SfxStringItem(DSID_TEXTFILEEXTENSION, "txt"), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_TEXTFILEHEADER, new SfxBoolItem(DSID_TEXTFILEHEADER, true), 
0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_PARAMETERNAMESUBST, new 
SfxBoolItem(DSID_PARAMETERNAMESUBST, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_PORTNUMBER, new SfxInt32Item(DSID_CONN_PORTNUMBER, 
8100), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_SUPPRESSVERSIONCL, new SfxBoolItem(DSID_SUPPRESSVERSIONCL, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_SHUTSERVICE, new SfxBoolItem(DSID_CONN_SHUTSERVICE, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_DATAINC, new SfxInt32Item(DSID_CONN_DATAINC, 20), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_CACHESIZE, new SfxInt32Item(DSID_CONN_CACHESIZE, 20), 
0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_CTRLUSER, new SfxStringItem(DSID_CONN_CTRLUSER, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_CTRLPWD, new SfxStringItem(DSID_CONN_CTRLPWD, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_USECATALOG, new SfxBoolItem(DSID_USECATALOG, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_HOSTNAME, new SfxStringItem(DSID_CONN_HOSTNAME, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_LDAP_BASEDN, new SfxStringItem(DSID_CONN_LDAP_BASEDN, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_LDAP_PORTNUMBER, new 
SfxInt32Item(DSID_CONN_LDAP_PORTNUMBER, 389), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_LDAP_ROWCOUNT, new 
SfxInt32Item(DSID_CONN_LDAP_ROWCOUNT, 100), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_SQL92CHECK, new SfxBoolItem(DSID_SQL92CHECK, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_AUTOINCREMENTVALUE, new 
SfxStringItem(DSID_AUTOINCREMENTVALUE, OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_AUTORETRIEVEVALUE, new 
SfxStringItem(DSID_AUTORETRIEVEVALUE, OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_AUTORETRIEVEENABLED, new 
SfxBoolItem(DSID_AUTORETRIEVEENABLED, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_APPEND_TABLE_ALIAS, new 
SfxBoolItem(DSID_APPEND_TABLE_ALIAS, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_MYSQL_PORTNUMBER, new SfxInt32Item(DSID_MYSQL_PORTNUMBER, 
3306), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_IGNOREDRIVER_PRIV, new SfxBoolItem(DSID_IGNOREDRIVER_PRIV, 
true), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_BOOLEANCOMPARISON, new SfxInt32Item(DSID_BOOLEANCOMPARISON, 
0), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_ORACLE_PORTNUMBER, new SfxInt32Item(DSID_ORACLE_PORTNUMBER, 
1521), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_ENABLEOUTERJOIN, new SfxBoolItem(DSID_ENABLEOUTERJOIN, 
true), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CATALOG, new SfxBoolItem(DSID_CATALOG, true), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_SCHEMA, new SfxBoolItem(DSID_SCHEMA, true), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_INDEXAPPENDIX, new SfxBoolItem(DSID_INDEXAPPENDIX, true), 
0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_LDAP_USESSL, new SfxBoolItem(DSID_CONN_LDAP_USESSL, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_DOCUMENT_URL, new SfxStringItem(DSID_DOCUMENT_URL, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_DOSLINEENDS, new SfxBoolItem(DSID_DOSLINEENDS, false), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_DATABASENAME, new SfxStringItem(DSID_DATABASENAME, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_AS_BEFORE_CORRNAME, new 
SfxBoolItem(DSID_AS_BEFORE_CORRNAME, false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CHECK_REQUIRED_FIELDS, new 
SfxBoolItem(DSID_CHECK_REQUIRED_FIELDS, true), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_IGNORECURRENCY, new SfxBoolItem(DSID_IGNORECURRENCY, 
false), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_CONN_SOCKET, new SfxStringItem(DSID_CONN_SOCKET, 
OUString()), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_ESCAPE_DATETIME, new SfxBoolItem(DSID_ESCAPE_DATETIME, 
true), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_NAMED_PIPE, new SfxStringItem(DSID_NAMED_PIPE, OUString()), 
0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_PRIMARY_KEY_SUPPORT, new OptionalBoolItem( 
DSID_PRIMARY_KEY_SUPPORT ), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_MAX_ROW_SCAN, new SfxInt32Item(DSID_MAX_ROW_SCAN, 100), 0, 
SFX_ITEMINFOFLAG_NONE },
+            { DSID_RESPECTRESULTSETTYPE, new SfxBoolItem( 
DSID_RESPECTRESULTSETTYPE,false ), 0, SFX_ITEMINFOFLAG_NONE },
+            { DSID_POSTGRES_PORTNUMBER, new 
SfxInt32Item(DSID_POSTGRES_PORTNUMBER, 5432), 0, SFX_ITEMINFOFLAG_NONE }
+        }};
+
+    public:
+        ItemInfoPackageAdminDlg()
+        {
+            static constexpr OUString sFilterAll( u"%"_ustr );
+            setItemAtItemInfoStatic(
+                new OStringListItem(DSID_TABLEFILTER, Sequence< OUString 
>{sFilterAll}),
+                maItemInfos[DSID_TABLEFILTER - DSID_FIRST_ITEM_ID]);
+        }
+
+        virtual size_t size() const override { return maItemInfos.size(); }
+        virtual const ItemInfo& getItemInfo(size_t nIndex, SfxItemPool& 
/*rPool*/) override { return maItemInfos[nIndex]; }
     };
 
-    OSL_ENSURE(std::size(aItemInfos) == sal_uInt16(DSID_LAST_ITEM_ID),"Invalid 
Ids!");
-    _rpPool = new SfxItemPool("DSAItemPool", DSID_FIRST_ITEM_ID, 
DSID_LAST_ITEM_ID,
-        aItemInfos, _rpDefaults);
-    _rpPool->FreezeIdRanges();
+    static std::unique_ptr<ItemInfoPackageAdminDlg> g_aItemInfoPackageAdminDlg;
+    if (!g_aItemInfoPackageAdminDlg)
+        g_aItemInfoPackageAdminDlg.reset(new ItemInfoPackageAdminDlg);
+    return *g_aItemInfoPackageAdminDlg;
+}
+
+void ODbAdminDialog::createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool, ::dbaccess::ODsnTypeCollection* 
_pTypeCollection)
+{
+    // just to be sure...
+    _rpSet = nullptr;
+    _rpPool = nullptr;
+    _rpPool = new SfxItemPool("DSAItemPool");
+
+    // here we have to use the callback to create all needed default entries 
since
+    // the DSID_TYPECOLLECTION needs the local given _pTypeCollection. Thus 
this will
+    // be a ItemInfoDynamic created by SfxItemPool::registerItemInfoPackage. 
That
+    // (and the contained Item) will be owned by the Pool and cleaned up when 
it goes
+    // down (see SfxItemPool::cleanupItemInfos())
+    _rpPool->registerItemInfoPackage(
+        getItemInfoPackageAdminDlg(),
+        [&_pTypeCollection](sal_uInt16 nWhich)
+        {
+            SfxPoolItem* pRetval(nullptr);
+            if (DSID_TYPECOLLECTION == nWhich)
+                pRetval = new DbuTypeCollectionItem(DSID_TYPECOLLECTION, 
_pTypeCollection);
+            return pRetval;
+        });
 
     // and, finally, the set
     _rpSet.reset(new SfxItemSet(*_rpPool));
 }
 
-void ODbAdminDialog::destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults)
+void ODbAdminDialog::destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool)
 {
     // _first_ delete the set (referring the pool)
     _rpSet.reset();
 
     // delete the pool
-    if (_rpPool)
-    {
-        _rpPool->ReleasePoolDefaults(true);
-            // the "true" means delete the items, too
-        _rpPool = nullptr;
-    }
-
-    // reset the defaults ptr
-    _rpDefaults = nullptr;
-        // no need to explicitly delete the defaults, this has been done by 
the ReleaseDefaults
+    _rpPool = nullptr;
 }
 
 }   // namespace dbaui
diff --git a/dbaccess/source/ui/inc/dbadmin.hxx 
b/dbaccess/source/ui/inc/dbadmin.hxx
index 53222a6afca2..ac56418ab71c 100644
--- a/dbaccess/source/ui/inc/dbadmin.hxx
+++ b/dbaccess/source/ui/inc/dbadmin.hxx
@@ -63,10 +63,10 @@ public:
         @param      _pTypeCollection        pointer to an 
<type>ODatasourceMap</type>. May be NULL, in this case
                                             the pool will not contain a 
typecollection default.
     */
-    static void createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults, 
::dbaccess::ODsnTypeCollection* _pTypeCollection);
+    static void createItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool, ::dbaccess::ODsnTypeCollection* 
_pTypeCollection);
     /** destroy and item set / item pool / pool defaults previously created by 
<method>createItemSet</method>
     */
-    static void destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& _rpDefaults);
+    static void destroyItemSet(std::unique_ptr<SfxItemSet>& _rpSet, 
rtl::Reference<SfxItemPool>& _rpPool);
 
     /** selects the DataSource
         @param  _rName
diff --git a/dbaccess/source/ui/inc/unoadmin.hxx 
b/dbaccess/source/ui/inc/unoadmin.hxx
index 944dccf87ae6..a1d6de4e8a0f 100644
--- a/dbaccess/source/ui/inc/unoadmin.hxx
+++ b/dbaccess/source/ui/inc/unoadmin.hxx
@@ -25,7 +25,6 @@
 
 class SfxItemSet;
 class SfxItemPool;
-class SfxPoolItem;
 
 namespace dbaui
 {
@@ -38,8 +37,6 @@ class ODatabaseAdministrationDialog
 protected:
     std::unique_ptr<SfxItemSet> m_pDatasourceItems; // item set for the dialog
     rtl::Reference<SfxItemPool> m_pItemPool;            // item pool for the 
item set for the dialog
-    std::vector<SfxPoolItem*>*
-                            m_pItemPoolDefaults;    // pool defaults
     std::unique_ptr<::dbaccess::ODsnTypeCollection>
                             m_pCollection;          // datasource type 
collection
 
diff --git a/dbaccess/source/ui/misc/UITools.cxx 
b/dbaccess/source/ui/misc/UITools.cxx
index a6474645b374..2a9747c01e5a 100644
--- a/dbaccess/source/ui/misc/UITools.cxx
+++ b/dbaccess/source/ui/misc/UITools.cxx
@@ -751,6 +751,29 @@ void callColumnFormatDialog(const Reference<XPropertySet>& 
xAffectedCol,
     }
 }
 
+static ItemInfoPackage& getItemInfoPackageColumnFormatDialog()
+{
+    class ItemInfoPackageColumnFormatDialog : public ItemInfoPackage
+    {
+        typedef std::array<ItemInfoStatic, SBA_ATTR_ALIGN_HOR_JUSTIFY - 
SBA_DEF_RANGEFORMAT + 1> ItemInfoArrayColumnFormatDialog;
+        ItemInfoArrayColumnFormatDialog maItemInfos {{
+            // m_nWhich, m_pItem, m_nSlotID, m_nItemInfoFlags
+            { SBA_DEF_RANGEFORMAT, new SfxRangeItem(SBA_DEF_RANGEFORMAT, 
SBA_DEF_FMTVALUE, SBA_ATTR_ALIGN_HOR_JUSTIFY), 0, SFX_ITEMINFOFLAG_NONE },
+            { SBA_DEF_FMTVALUE, new SfxUInt32Item(SBA_DEF_FMTVALUE), 
SID_ATTR_NUMBERFORMAT_VALUE, SFX_ITEMINFOFLAG_NONE },
+            { SBA_ATTR_ALIGN_HOR_JUSTIFY, new 
SvxHorJustifyItem(SvxCellHorJustify::Standard, SBA_ATTR_ALIGN_HOR_JUSTIFY), 
SID_ATTR_ALIGN_HOR_JUSTIFY, SFX_ITEMINFOFLAG_NONE },
+        }};
+
+    public:
+        virtual size_t size() const override { return maItemInfos.size(); }
+        virtual const ItemInfo& getItemInfo(size_t nIndex, SfxItemPool& 
/*rPool*/) override { return maItemInfos[nIndex]; }
+    };
+
+    static std::unique_ptr<ItemInfoPackageColumnFormatDialog> 
g_aItemInfoPackageColumnFormatDialog;
+    if (!g_aItemInfoPackageColumnFormatDialog)
+        g_aItemInfoPackageColumnFormatDialog.reset(new 
ItemInfoPackageColumnFormatDialog);
+    return *g_aItemInfoPackageColumnFormatDialog;
+}
+
 bool callColumnFormatDialog(weld::Widget* _pParent,
                                 SvNumberFormatter* _pFormatter,
                                 sal_Int32 _nDataType,
@@ -761,33 +784,15 @@ bool callColumnFormatDialog(weld::Widget* _pParent,
     bool bRet = false;
 
     // UNO->ItemSet
-    static SfxItemInfo aItemInfos[] =
-    {
-        // _nItemInfoSlotID, _nItemInfoFlags
-        { 0,                                SFX_ITEMINFOFLAG_NONE },    // 
SBA_DEF_RANGEFORMAT
-        { SID_ATTR_NUMBERFORMAT_VALUE,      SFX_ITEMINFOFLAG_NONE },    // 
SBA_DEF_FMTVALUE
-        { SID_ATTR_ALIGN_HOR_JUSTIFY,       SFX_ITEMINFOFLAG_NONE },    // 
SBA_ATTR_ALIGN_HOR_JUSTIFY
-        { SID_ATTR_NUMBERFORMAT_INFO,       SFX_ITEMINFOFLAG_NONE },    // 
SID_ATTR_NUMBERFORMAT_INFO
-        { SID_ATTR_NUMBERFORMAT_ONE_AREA,   SFX_ITEMINFOFLAG_NONE }     // 
SID_ATTR_NUMBERFORMAT_ONE_AREA
-    };
     static const auto aAttrMap = svl::Items<
         SBA_DEF_RANGEFORMAT, SBA_ATTR_ALIGN_HOR_JUSTIFY,
         SID_ATTR_NUMBERFORMAT_INFO, SID_ATTR_NUMBERFORMAT_INFO,
         SID_ATTR_NUMBERFORMAT_ONE_AREA, SID_ATTR_NUMBERFORMAT_ONE_AREA
     >;
 
-    std::vector<SfxPoolItem*> pDefaults
-    {
-        new SfxRangeItem(SBA_DEF_RANGEFORMAT, SBA_DEF_FMTVALUE, 
SBA_ATTR_ALIGN_HOR_JUSTIFY),
-        new SfxUInt32Item(SBA_DEF_FMTVALUE),
-        new SvxHorJustifyItem(SvxCellHorJustify::Standard, 
SBA_ATTR_ALIGN_HOR_JUSTIFY),
-        new SvxNumberInfoItem(SID_ATTR_NUMBERFORMAT_INFO),
-        new SfxBoolItem(SID_ATTR_NUMBERFORMAT_ONE_AREA, false)
-    };
-
-    rtl::Reference<SfxItemPool> pPool(new SfxItemPool("GridBrowserProperties", 
SBA_DEF_RANGEFORMAT, SBA_ATTR_ALIGN_HOR_JUSTIFY, aItemInfos, &pDefaults));
+    rtl::Reference<SfxItemPool> pPool(new 
SfxItemPool("GridBrowserProperties"));
+    pPool->registerItemInfoPackage(getItemInfoPackageColumnFormatDialog());
     pPool->SetDefaultMetric( MapUnit::MapTwip );    // ripped, don't 
understand why
-    pPool->FreezeIdRanges();                        // the same
 
     std::optional<SfxItemSet> pFormatDescriptor(SfxItemSet(*pPool, aAttrMap));
     // fill it
@@ -853,8 +858,6 @@ bool callColumnFormatDialog(weld::Widget* _pParent,
 
     pFormatDescriptor.reset();
     pPool.clear();
-    for (SfxPoolItem* pDefault : pDefaults)
-        delete pDefault;
 
     return bRet;
 }
diff --git a/dbaccess/source/ui/uno/unoadmin.cxx 
b/dbaccess/source/ui/uno/unoadmin.cxx
index 3d863b92e8f9..8a98fff515f1 100644
--- a/dbaccess/source/ui/uno/unoadmin.cxx
+++ b/dbaccess/source/ui/uno/unoadmin.cxx
@@ -31,11 +31,10 @@ namespace dbaui
     using namespace ::com::sun::star::beans;
 
 ODatabaseAdministrationDialog::ODatabaseAdministrationDialog(const Reference< 
XComponentContext >& _rxORB)
-    :ODatabaseAdministrationDialogBase(_rxORB)
-    ,m_pItemPoolDefaults(nullptr)
+: ODatabaseAdministrationDialogBase(_rxORB)
 {
     m_pCollection.reset( new ::dbaccess::ODsnTypeCollection(_rxORB) );
-    ODbAdminDialog::createItemSet(m_pDatasourceItems, m_pItemPool, 
m_pItemPoolDefaults, m_pCollection.get());
+    ODbAdminDialog::createItemSet(m_pDatasourceItems, m_pItemPool, 
m_pCollection.get());
 }
 
 ODatabaseAdministrationDialog::~ODatabaseAdministrationDialog()
@@ -43,7 +42,7 @@ 
ODatabaseAdministrationDialog::~ODatabaseAdministrationDialog()
    ::osl::MutexGuard aGuard(m_aMutex);
    if (m_xDialog)
       destroyDialog();
-   ODbAdminDialog::destroyItemSet(m_pDatasourceItems, m_pItemPool, 
m_pItemPoolDefaults);
+   ODbAdminDialog::destroyItemSet(m_pDatasourceItems, m_pItemPool);
 }
 
 void ODatabaseAdministrationDialog::implInitialize(const Any& _rValue)
diff --git a/editeng/inc/editdoc.hxx b/editeng/inc/editdoc.hxx
index 0c2bcd28fa97..ede186b717a5 100644
--- a/editeng/inc/editdoc.hxx
+++ b/editeng/inc/editdoc.hxx
@@ -225,8 +225,6 @@ void CheckOrderedList(const CharAttribList::AttribsType& 
rAttribs);
 
 class EditEngineItemPool final : public SfxItemPool
 {
-private:
-    std::shared_ptr<DefItems> m_xDefItems;
 public:
     EditEngineItemPool();
 private:
diff --git a/editeng/inc/eerdll2.hxx b/editeng/inc/eerdll2.hxx
index 76653e79c403..e7882904d688 100644
--- a/editeng/inc/eerdll2.hxx
+++ b/editeng/inc/eerdll2.hxx
@@ -39,26 +39,13 @@ namespace editeng
     };
 }
 
-class DefItems
-{
-public:
-    DefItems();
-    std::vector<SfxPoolItem*> & getDefaults() { return mvDefItems; }
-    ~DefItems();
-private:
-    std::vector<SfxPoolItem*> mvDefItems;
-};
-
 class GlobalEditData
 {
 private:
     css::uno::Reference< css::linguistic2::XLanguageGuessing >  
xLanguageGuesser;
-    std::weak_ptr<DefItems> m_xDefItems;
     std::shared_ptr<SvxForbiddenCharactersTable> xForbiddenCharsTable;
 
 public:
-    std::shared_ptr<DefItems> GetDefItems();
-
     std::shared_ptr<SvxForbiddenCharactersTable> const & 
GetForbiddenCharsTable();
     void            
SetForbiddenCharsTable(std::shared_ptr<SvxForbiddenCharactersTable> const & 
xForbiddenChars ) { xForbiddenCharsTable = xForbiddenChars; }
     css::uno::Reference< css::linguistic2::XLanguageGuessing > const & 
GetLanguageGuesser();
diff --git a/editeng/source/editeng/editdoc.cxx 
b/editeng/source/editeng/editdoc.cxx
index 14d4fdaf9b0f..bf9fca26f36c 100644
--- a/editeng/source/editeng/editdoc.cxx
+++ b/editeng/source/editeng/editdoc.cxx
@@ -157,67 +157,6 @@ bool IsScriptItemValid( sal_uInt16 nItemId, short 
nScriptType )
     return bValid;
 }
 
-const SfxItemInfo aItemInfos[EDITITEMCOUNT] =
-{
-        // _nItemInfoSlotID, _nItemInfoFlags
-        { SID_ATTR_FRAMEDIRECTION, SFX_ITEMINFOFLAG_NONE  },         // 
EE_PARA_WRITINGDIR
-        { 0, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },                            
   // EE_PARA_XMLATTRIBS
-        { SID_ATTR_PARA_HANGPUNCTUATION, SFX_ITEMINFOFLAG_NONE  },   // 
EE_PARA_HANGINGPUNCTUATION
-        { SID_ATTR_PARA_FORBIDDEN_RULES, SFX_ITEMINFOFLAG_NONE  },   // 
EE_PARA_FORBIDDENRULES
-        { SID_ATTR_PARA_SCRIPTSPACE, SFX_ITEMINFOFLAG_NONE  },       // 
EE_PARA_ASIANCJKSPACING
-        { SID_ATTR_NUMBERING_RULE, SFX_ITEMINFOFLAG_NONE  },         // 
EE_PARA_NUMBULL
-        { 0, SFX_ITEMINFOFLAG_NONE  },                               // 
EE_PARA_HYPHENATE
-        { 0, SFX_ITEMINFOFLAG_NONE  },                               // 
EE_PARA_HYPHENATE_NO_CAPS
-        { 0, SFX_ITEMINFOFLAG_NONE  },                               // 
EE_PARA_HYPHENATE_NO_LAST_WORD
-        { 0, SFX_ITEMINFOFLAG_NONE  },                               // 
EE_PARA_BULLETSTATE
-        { 0, SFX_ITEMINFOFLAG_NONE  },                               // 
EE_PARA_OUTLLRSPACE
-        { SID_ATTR_PARA_OUTLLEVEL, SFX_ITEMINFOFLAG_NONE  },         // 
EE_PARA_OUTLLEVEL
-        { SID_ATTR_PARA_BULLET, SFX_ITEMINFOFLAG_NONE  },            // 
EE_PARA_BULLET
-        { SID_ATTR_LRSPACE, SFX_ITEMINFOFLAG_NONE  },                // 
EE_PARA_LRSPACE
-        { SID_ATTR_ULSPACE, SFX_ITEMINFOFLAG_NONE  },                // 
EE_PARA_ULSPACE
-        { SID_ATTR_PARA_LINESPACE, SFX_ITEMINFOFLAG_NONE  },         // 
EE_PARA_SBL
-        { SID_ATTR_PARA_ADJUST, SFX_ITEMINFOFLAG_NONE  },            // 
EE_PARA_JUST
-        { SID_ATTR_TABSTOP, SFX_ITEMINFOFLAG_NONE  },                // 
EE_PARA_TABS
-        { SID_ATTR_ALIGN_HOR_JUSTIFY_METHOD, SFX_ITEMINFOFLAG_NONE  }, // 
EE_PARA_JUST_METHOD
-        { SID_ATTR_ALIGN_VER_JUSTIFY, SFX_ITEMINFOFLAG_NONE  },      // 
EE_PARA_VER_JUST
-        { SID_ATTR_CHAR_COLOR, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },         
// EE_CHAR_COLOR
-        { SID_ATTR_CHAR_FONT, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },          
// EE_CHAR_FONTINFO
-        { SID_ATTR_CHAR_FONTHEIGHT, SFX_ITEMINFOFLAG_NONE  },    // 
EE_CHAR_FONTHEIGHT
-        { SID_ATTR_CHAR_SCALEWIDTH, SFX_ITEMINFOFLAG_NONE  },    // 
EE_CHAR_FONTWIDTH
-        { SID_ATTR_CHAR_WEIGHT, SFX_ITEMINFOFLAG_NONE  },        // 
EE_CHAR_WEIGHT
-        { SID_ATTR_CHAR_UNDERLINE, SFX_ITEMINFOFLAG_NONE  },     // 
EE_CHAR_UNDERLINE
-        { SID_ATTR_CHAR_STRIKEOUT, SFX_ITEMINFOFLAG_NONE  },     // 
EE_CHAR_STRIKEOUT
-        { SID_ATTR_CHAR_POSTURE, SFX_ITEMINFOFLAG_NONE  },       // 
EE_CHAR_ITALIC
-        { SID_ATTR_CHAR_CONTOUR, SFX_ITEMINFOFLAG_NONE  },       // 
EE_CHAR_OUTLINE
-        { SID_ATTR_CHAR_SHADOWED, SFX_ITEMINFOFLAG_NONE  },      // 
EE_CHAR_SHADOW
-        { SID_ATTR_CHAR_ESCAPEMENT, SFX_ITEMINFOFLAG_NONE  },    // 
EE_CHAR_ESCAPEMENT
-        { SID_ATTR_CHAR_AUTOKERN, SFX_ITEMINFOFLAG_NONE  },      // 
EE_CHAR_PAIRKERNING
-        { SID_ATTR_CHAR_KERNING, SFX_ITEMINFOFLAG_NONE  },       // 
EE_CHAR_KERNING
-        { SID_ATTR_CHAR_WORDLINEMODE, SFX_ITEMINFOFLAG_NONE  },  // EE_CHAR_WLM
-        { SID_ATTR_CHAR_LANGUAGE, SFX_ITEMINFOFLAG_NONE  },      // 
EE_CHAR_LANGUAGE
-        { SID_ATTR_CHAR_CJK_LANGUAGE, SFX_ITEMINFOFLAG_NONE  },  // 
EE_CHAR_LANGUAGE_CJK
-        { SID_ATTR_CHAR_CTL_LANGUAGE, SFX_ITEMINFOFLAG_NONE  },  // 
EE_CHAR_LANGUAGE_CTL
-        { SID_ATTR_CHAR_CJK_FONT, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },      
// EE_CHAR_FONTINFO_CJK
-        { SID_ATTR_CHAR_CTL_FONT, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },      
// EE_CHAR_FONTINFO_CTL
-        { SID_ATTR_CHAR_CJK_FONTHEIGHT, SFX_ITEMINFOFLAG_NONE  }, // 
EE_CHAR_FONTHEIGHT_CJK
-        { SID_ATTR_CHAR_CTL_FONTHEIGHT, SFX_ITEMINFOFLAG_NONE  }, // 
EE_CHAR_FONTHEIGHT_CTL
-        { SID_ATTR_CHAR_CJK_WEIGHT, SFX_ITEMINFOFLAG_NONE  },    // 
EE_CHAR_WEIGHT_CJK
-        { SID_ATTR_CHAR_CTL_WEIGHT, SFX_ITEMINFOFLAG_NONE  },    // 
EE_CHAR_WEIGHT_CTL
-        { SID_ATTR_CHAR_CJK_POSTURE, SFX_ITEMINFOFLAG_NONE  },   // 
EE_CHAR_ITALIC_CJK
-        { SID_ATTR_CHAR_CTL_POSTURE, SFX_ITEMINFOFLAG_NONE  },   // 
EE_CHAR_ITALIC_CTL
-        { SID_ATTR_CHAR_EMPHASISMARK, SFX_ITEMINFOFLAG_NONE  },  // 
EE_CHAR_EMPHASISMARK
-        { SID_ATTR_CHAR_RELIEF, SFX_ITEMINFOFLAG_NONE  },        // 
EE_CHAR_RELIEF
-        { 0, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },                           
// EE_CHAR_XMLATTRIBS
-        { SID_ATTR_CHAR_OVERLINE, SFX_ITEMINFOFLAG_NONE  },      // 
EE_CHAR_OVERLINE
-        { SID_ATTR_CHAR_CASEMAP, SFX_ITEMINFOFLAG_NONE  },       // 
EE_CHAR_CASEMAP
-        { SID_ATTR_CHAR_GRABBAG, SFX_ITEMINFOFLAG_NONE  },       // 
EE_CHAR_GRABBAG
-        { SID_ATTR_CHAR_BACK_COLOR, SFX_ITEMINFOFLAG_NONE  },    // 
EE_CHAR_BKGCOLOR
-        { 0, SFX_ITEMINFOFLAG_NONE  },                           // 
EE_FEATURE_TAB
-        { 0, SFX_ITEMINFOFLAG_NONE  },                           // 
EE_FEATURE_LINEBR
-        { SID_ATTR_CHAR_CHARSETCOLOR, SFX_ITEMINFOFLAG_NONE  },  // 
EE_FEATURE_NOTCONV
-        { SID_FIELD, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },                    
// EE_FEATURE_FIELD
-};
-
 EditCharAttrib* MakeCharAttrib( SfxItemPool& rPool, const SfxPoolItem& rAttr, 
sal_Int32 nS, sal_Int32 nE )
 {
     // Create a new attribute in the pool
@@ -1539,16 +1478,13 @@ void EditDoc::dumpAsXml(xmlTextWriterPtr pWriter) const
 }
 
 EditEngineItemPool::EditEngineItemPool()
-    : SfxItemPool( "EditEngineItemPool", EE_ITEMS_START, EE_ITEMS_END,
-                    aItemInfos, nullptr )
+: SfxItemPool("EditEngineItemPool")
 {
-    m_xDefItems = EditDLL::Get().GetGlobalData()->GetDefItems();
-    SetPoolDefaults(&m_xDefItems->getDefaults());
+    registerItemInfoPackage(getItemInfoPackageEditEngine());
 }
 
 EditEngineItemPool::~EditEngineItemPool()
 {
-    ClearPoolDefaults();
     SetSecondaryPool(nullptr);
 }
 
diff --git a/editeng/source/editeng/eerdll.cxx 
b/editeng/source/editeng/eerdll.cxx
index d93eded8cbf7..ab6495c8a804 100644
--- a/editeng/source/editeng/eerdll.cxx
+++ b/editeng/source/editeng/eerdll.cxx
@@ -66,6 +66,8 @@
 #include <editeng/justifyitem.hxx>
 #include <tools/mapunit.hxx>
 #include <vcl/lazydelete.hxx>
+#include <svl/itempool.hxx>
+#include <editeng/editids.hrc>
 
 using namespace ::com::sun::star;
 
@@ -80,97 +82,132 @@ EditDLL& EditDLL::Get()
     return *gaEditDll.get();
 }
 
-DefItems::DefItems()
-    : mvDefItems(EDITITEMCOUNT)
+ItemInfoPackage& getItemInfoPackageEditEngine()
 {
-    std::vector<SfxPoolItem*>& rDefItems = mvDefItems;
-
-    // Paragraph attributes:
-    SvxNumRule aDefaultNumRule( SvxNumRuleFlags::NONE, 0, false );
-
-    rDefItems[0]  = new SvxFrameDirectionItem( 
SvxFrameDirection::Horizontal_LR_TB, EE_PARA_WRITINGDIR );
-    rDefItems[1]  = new SvXMLAttrContainerItem( EE_PARA_XMLATTRIBS );
-    rDefItems[2]  = new SvxHangingPunctuationItem(false, 
EE_PARA_HANGINGPUNCTUATION);
-    rDefItems[3]  = new SvxForbiddenRuleItem(true, EE_PARA_FORBIDDENRULES);
-    rDefItems[4]  = new SvxScriptSpaceItem( true, EE_PARA_ASIANCJKSPACING );
-    rDefItems[5]  = new SvxNumBulletItem( aDefaultNumRule, EE_PARA_NUMBULLET );
-    rDefItems[6]  = new SfxBoolItem( EE_PARA_HYPHENATE, false );
-    rDefItems[7]  = new SfxBoolItem( EE_PARA_HYPHENATE_NO_CAPS, false );
-    rDefItems[8]  = new SfxBoolItem( EE_PARA_HYPHENATE_NO_LAST_WORD, false );
-    rDefItems[9]  = new SfxBoolItem( EE_PARA_BULLETSTATE, true );
-    rDefItems[10]  = new SvxLRSpaceItem( EE_PARA_OUTLLRSPACE );
-    rDefItems[11]  = new SfxInt16Item( EE_PARA_OUTLLEVEL, -1 );
-    rDefItems[12] = new SvxBulletItem( EE_PARA_BULLET );
-    rDefItems[13] = new SvxLRSpaceItem( EE_PARA_LRSPACE );
-    rDefItems[14] = new SvxULSpaceItem( EE_PARA_ULSPACE );
-    rDefItems[15] = new SvxLineSpacingItem( 0, EE_PARA_SBL );
-    rDefItems[16] = new SvxAdjustItem( SvxAdjust::Left, EE_PARA_JUST );
-    rDefItems[17] = new SvxTabStopItem( 0, 0, SvxTabAdjust::Left, EE_PARA_TABS 
);
-    rDefItems[18] = new SvxJustifyMethodItem( SvxCellJustifyMethod::Auto, 
EE_PARA_JUST_METHOD );
-    rDefItems[19] = new SvxVerJustifyItem( SvxCellVerJustify::Standard, 
EE_PARA_VER_JUST );
-
-    // Character attributes:
-    rDefItems[20] = new SvxColorItem( COL_AUTO, EE_CHAR_COLOR );
-    rDefItems[21] = new SvxFontItem( EE_CHAR_FONTINFO );
-    rDefItems[22] = new SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT );
-    rDefItems[23] = new SvxCharScaleWidthItem( 100, EE_CHAR_FONTWIDTH );
-    rDefItems[24] = new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT );
-    rDefItems[25] = new SvxUnderlineItem( LINESTYLE_NONE, EE_CHAR_UNDERLINE );
-    rDefItems[26] = new SvxCrossedOutItem( STRIKEOUT_NONE, EE_CHAR_STRIKEOUT );
-    rDefItems[27] = new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC );
-    rDefItems[28] = new SvxContourItem( false, EE_CHAR_OUTLINE );
-    rDefItems[29] = new SvxShadowedItem( false, EE_CHAR_SHADOW );
-    rDefItems[30] = new SvxEscapementItem( 0, 100, EE_CHAR_ESCAPEMENT );
-    rDefItems[31] = new SvxAutoKernItem( false, EE_CHAR_PAIRKERNING );
-    rDefItems[32] = new SvxKerningItem( 0, EE_CHAR_KERNING );
-    rDefItems[33] = new SvxWordLineModeItem( false, EE_CHAR_WLM );
-    rDefItems[34] = new SvxLanguageItem( LANGUAGE_DONTKNOW, EE_CHAR_LANGUAGE );
-    rDefItems[35] = new SvxLanguageItem( LANGUAGE_DONTKNOW, 
EE_CHAR_LANGUAGE_CJK );
-    rDefItems[36] = new SvxLanguageItem( LANGUAGE_DONTKNOW, 
EE_CHAR_LANGUAGE_CTL );
-    rDefItems[37] = new SvxFontItem( EE_CHAR_FONTINFO_CJK );
-    rDefItems[38] = new SvxFontItem( EE_CHAR_FONTINFO_CTL );
-    rDefItems[39] = new SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT_CJK );
-    rDefItems[40] = new SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT_CTL );
-    rDefItems[41] = new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK );
-    rDefItems[42] = new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL );
-    rDefItems[43] = new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK );
-    rDefItems[44] = new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL );
-    rDefItems[45] = new SvxEmphasisMarkItem( FontEmphasisMark::NONE, 
EE_CHAR_EMPHASISMARK );
-    rDefItems[46] = new SvxCharReliefItem( FontRelief::NONE, EE_CHAR_RELIEF );
-    rDefItems[47] = new SvXMLAttrContainerItem( EE_CHAR_XMLATTRIBS );
-    rDefItems[48] = new SvxOverlineItem( LINESTYLE_NONE, EE_CHAR_OVERLINE );
-    rDefItems[49] = new SvxCaseMapItem( SvxCaseMap::NotMapped, EE_CHAR_CASEMAP 
);
-    rDefItems[50] = new SfxGrabBagItem( EE_CHAR_GRABBAG );
-    rDefItems[51] = new SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR );
-    // Features
-    rDefItems[52] = new SfxVoidItem( EE_FEATURE_TAB );
-    rDefItems[53] = new SfxVoidItem( EE_FEATURE_LINEBR );
-    rDefItems[54] = new SvxColorItem( COL_RED, EE_FEATURE_NOTCONV );
-    rDefItems[55] = new SvxFieldItem( SvxFieldData(), EE_FEATURE_FIELD );
-
-    assert(EDITITEMCOUNT == 56 && "ITEMCOUNT changed, adjust DefItems!");
-
-    // Init DefFonts:
-    GetDefaultFonts( *static_cast<SvxFontItem*>(rDefItems[EE_CHAR_FONTINFO - 
EE_ITEMS_START]),
-                     *static_cast<SvxFontItem*>(rDefItems[EE_CHAR_FONTINFO_CJK 
- EE_ITEMS_START]),
-                     *static_cast<SvxFontItem*>(rDefItems[EE_CHAR_FONTINFO_CTL 
- EE_ITEMS_START]) );
-}
+    class ItemInfoPackageEditEngine : public ItemInfoPackage
+    {
+        typedef std::array<ItemInfoStatic, EE_ITEMS_END - EE_ITEMS_START + 1> 
ItemInfoArrayEditEngine;
+        ItemInfoArrayEditEngine maItemInfos {{
+            // m_nWhich, m_pItem, m_nSlotID, m_nItemInfoFlags
+            { EE_PARA_WRITINGDIR, new SvxFrameDirectionItem( 
SvxFrameDirection::Horizontal_LR_TB, EE_PARA_WRITINGDIR ), 
SID_ATTR_FRAMEDIRECTION, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_XMLATTRIBS, new SvXMLAttrContainerItem( 
EE_PARA_XMLATTRIBS ), 0, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },
+            { EE_PARA_HANGINGPUNCTUATION, new SvxHangingPunctuationItem(false, 
EE_PARA_HANGINGPUNCTUATION), SID_ATTR_PARA_HANGPUNCTUATION, 
SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_FORBIDDENRULES, new SvxForbiddenRuleItem(true, 
EE_PARA_FORBIDDENRULES), SID_ATTR_PARA_FORBIDDEN_RULES, SFX_ITEMINFOFLAG_NONE  
},
+            { EE_PARA_ASIANCJKSPACING, new SvxScriptSpaceItem( true, 
EE_PARA_ASIANCJKSPACING ), SID_ATTR_PARA_SCRIPTSPACE, SFX_ITEMINFOFLAG_NONE  },
 
-DefItems::~DefItems()
-{
-    for (const auto& rItem : mvDefItems)
-        delete rItem;
-}
+            // need to use dynamic default for this Item, the office tends to 
crash at shutdown
+            // due to static stuff/cleanup at ~SvxNumRule 
(pStdNumFmt/pStdOutlineNumFmt)
+            { EE_PARA_NUMBULLET, nullptr, SID_ATTR_NUMBERING_RULE, 
SFX_ITEMINFOFLAG_NONE  },
 
-std::shared_ptr<DefItems> GlobalEditData::GetDefItems()
-{
-    auto xDefItems = m_xDefItems.lock();
-    if (!xDefItems)
-    {
-        xDefItems = std::make_shared<DefItems>();
-        m_xDefItems = xDefItems;
-    }
-    return xDefItems;
+            { EE_PARA_HYPHENATE, new SfxBoolItem( EE_PARA_HYPHENATE, false ), 
0, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_HYPHENATE_NO_CAPS, new SfxBoolItem( 
EE_PARA_HYPHENATE_NO_CAPS, false ), 0, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_HYPHENATE_NO_LAST_WORD, new SfxBoolItem( 
EE_PARA_HYPHENATE_NO_LAST_WORD, false ), 0, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_BULLETSTATE, new SfxBoolItem( EE_PARA_BULLETSTATE, true 
), 0, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_OUTLLRSPACE, new SvxLRSpaceItem( EE_PARA_OUTLLRSPACE ), 
0, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_OUTLLEVEL, new SfxInt16Item( EE_PARA_OUTLLEVEL, -1 ), 
SID_ATTR_PARA_OUTLLEVEL, SFX_ITEMINFOFLAG_NONE  },
+
+            // needs on-demand initialization
+            { EE_PARA_BULLET, nullptr, SID_ATTR_PARA_BULLET, 
SFX_ITEMINFOFLAG_NONE  },
+
+            { EE_PARA_LRSPACE, new SvxLRSpaceItem( EE_PARA_LRSPACE ), 
SID_ATTR_LRSPACE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_ULSPACE, new SvxULSpaceItem( EE_PARA_ULSPACE ), 
SID_ATTR_ULSPACE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_SBL, new SvxLineSpacingItem( 0, EE_PARA_SBL ), 
SID_ATTR_PARA_LINESPACE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_JUST, new SvxAdjustItem( SvxAdjust::Left, EE_PARA_JUST 
), SID_ATTR_PARA_ADJUST, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_TABS, new SvxTabStopItem( 0, 0, SvxTabAdjust::Left, 
EE_PARA_TABS ), SID_ATTR_TABSTOP, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_JUST_METHOD, new SvxJustifyMethodItem( 
SvxCellJustifyMethod::Auto, EE_PARA_JUST_METHOD ), 
SID_ATTR_ALIGN_HOR_JUSTIFY_METHOD, SFX_ITEMINFOFLAG_NONE  },
+            { EE_PARA_VER_JUST, new SvxVerJustifyItem( 
SvxCellVerJustify::Standard, EE_PARA_VER_JUST ), SID_ATTR_ALIGN_VER_JUSTIFY, 
SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_COLOR, new SvxColorItem( COL_AUTO, EE_CHAR_COLOR ), 
SID_ATTR_CHAR_COLOR, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },
+
+            // EE_CHAR_FONTINFO, EE_CHAR_FONTINFO_CJK and EE_CHAR_FONTINFO_CTL 
need on-demand initialization
+            { EE_CHAR_FONTINFO, nullptr, SID_ATTR_CHAR_FONT, 
SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },
+
+            { EE_CHAR_FONTHEIGHT, new SvxFontHeightItem( 240, 100, 
EE_CHAR_FONTHEIGHT ), SID_ATTR_CHAR_FONTHEIGHT, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_FONTWIDTH, new SvxCharScaleWidthItem( 100, 
EE_CHAR_FONTWIDTH ), SID_ATTR_CHAR_SCALEWIDTH, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_WEIGHT, new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT 
), SID_ATTR_CHAR_WEIGHT, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_UNDERLINE, new SvxUnderlineItem( LINESTYLE_NONE, 
EE_CHAR_UNDERLINE ), SID_ATTR_CHAR_UNDERLINE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_STRIKEOUT, new SvxCrossedOutItem( STRIKEOUT_NONE, 
EE_CHAR_STRIKEOUT ), SID_ATTR_CHAR_STRIKEOUT, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_ITALIC, new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC 
), SID_ATTR_CHAR_POSTURE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_OUTLINE, new SvxContourItem( false, EE_CHAR_OUTLINE ), 
SID_ATTR_CHAR_CONTOUR, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_SHADOW, new SvxShadowedItem( false, EE_CHAR_SHADOW ), 
SID_ATTR_CHAR_SHADOWED, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_ESCAPEMENT, new SvxEscapementItem( 0, 100, 
EE_CHAR_ESCAPEMENT ), SID_ATTR_CHAR_ESCAPEMENT, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_PAIRKERNING, new SvxAutoKernItem( false, 
EE_CHAR_PAIRKERNING ), SID_ATTR_CHAR_AUTOKERN, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_KERNING, new SvxKerningItem( 0, EE_CHAR_KERNING ), 
SID_ATTR_CHAR_KERNING, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_WLM, new SvxWordLineModeItem( false, EE_CHAR_WLM ), 
SID_ATTR_CHAR_WORDLINEMODE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_LANGUAGE, new SvxLanguageItem( LANGUAGE_DONTKNOW, 
EE_CHAR_LANGUAGE ), SID_ATTR_CHAR_LANGUAGE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_LANGUAGE_CJK, new SvxLanguageItem( LANGUAGE_DONTKNOW, 
EE_CHAR_LANGUAGE_CJK ), SID_ATTR_CHAR_CJK_LANGUAGE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_LANGUAGE_CTL, new SvxLanguageItem( LANGUAGE_DONTKNOW, 
EE_CHAR_LANGUAGE_CTL ), SID_ATTR_CHAR_CTL_LANGUAGE, SFX_ITEMINFOFLAG_NONE  },
+
+            // see EE_CHAR_FONTINFO above
+            { EE_CHAR_FONTINFO_CJK, nullptr, SID_ATTR_CHAR_CJK_FONT, 
SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },
+            { EE_CHAR_FONTINFO_CTL, nullptr, SID_ATTR_CHAR_CTL_FONT, 
SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },
+
+            { EE_CHAR_FONTHEIGHT_CJK, new SvxFontHeightItem( 240, 100, 
EE_CHAR_FONTHEIGHT_CJK ), SID_ATTR_CHAR_CJK_FONTHEIGHT, SFX_ITEMINFOFLAG_NONE  
},
+            { EE_CHAR_FONTHEIGHT_CTL, new SvxFontHeightItem( 240, 100, 
EE_CHAR_FONTHEIGHT_CTL ), SID_ATTR_CHAR_CTL_FONTHEIGHT, SFX_ITEMINFOFLAG_NONE  
},
+            { EE_CHAR_WEIGHT_CJK, new SvxWeightItem( WEIGHT_NORMAL, 
EE_CHAR_WEIGHT_CJK ), SID_ATTR_CHAR_CJK_WEIGHT, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_WEIGHT_CTL, new SvxWeightItem( WEIGHT_NORMAL, 
EE_CHAR_WEIGHT_CTL ), SID_ATTR_CHAR_CTL_WEIGHT, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_ITALIC_CJK, new SvxPostureItem( ITALIC_NONE, 
EE_CHAR_ITALIC_CJK ), SID_ATTR_CHAR_CJK_POSTURE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_ITALIC_CTL, new SvxPostureItem( ITALIC_NONE, 
EE_CHAR_ITALIC_CTL ), SID_ATTR_CHAR_CTL_POSTURE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_EMPHASISMARK, new SvxEmphasisMarkItem( 
FontEmphasisMark::NONE, EE_CHAR_EMPHASISMARK ), SID_ATTR_CHAR_EMPHASISMARK, 
SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_RELIEF, new SvxCharReliefItem( FontRelief::NONE, 
EE_CHAR_RELIEF ), SID_ATTR_CHAR_RELIEF, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_XMLATTRIBS, new SvXMLAttrContainerItem( 
EE_CHAR_XMLATTRIBS ), 0, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  },
+            { EE_CHAR_OVERLINE, new SvxOverlineItem( LINESTYLE_NONE, 
EE_CHAR_OVERLINE ), SID_ATTR_CHAR_OVERLINE, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_CASEMAP, new SvxCaseMapItem( SvxCaseMap::NotMapped, 
EE_CHAR_CASEMAP ), SID_ATTR_CHAR_CASEMAP, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_GRABBAG, new SfxGrabBagItem( EE_CHAR_GRABBAG ), 
SID_ATTR_CHAR_GRABBAG, SFX_ITEMINFOFLAG_NONE  },
+            { EE_CHAR_BKGCOLOR, new SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR 
), SID_ATTR_CHAR_BACK_COLOR, SFX_ITEMINFOFLAG_NONE  },
+            { EE_FEATURE_TAB, new SfxVoidItem( EE_FEATURE_TAB ), 0, 
SFX_ITEMINFOFLAG_NONE  },
+            { EE_FEATURE_LINEBR, new SfxVoidItem( EE_FEATURE_LINEBR ), 0, 
SFX_ITEMINFOFLAG_NONE  },
+            { EE_FEATURE_NOTCONV, new SvxColorItem( COL_RED, 
EE_FEATURE_NOTCONV ), SID_ATTR_CHAR_CHARSETCOLOR, SFX_ITEMINFOFLAG_NONE  },
+            { EE_FEATURE_FIELD, new SvxFieldItem( SvxFieldData(), 
EE_FEATURE_FIELD ), SID_FIELD, SFX_ITEMINFOFLAG_SUPPORT_SURROGATE  }
+        }};
+
+    public:
+        ItemInfoPackageEditEngine()
+        {
+            // on-demand (but only once) as static defaults - above (and also
+            // in constructor) the needed OutputDevice::Font stuff is not yet
+            // initialized
+            setItemAtItemInfoStatic(
+                new SvxBulletItem(EE_PARA_BULLET),
+                maItemInfos[EE_PARA_BULLET - EE_ITEMS_START]);
+
+            // same for 
EE_CHAR_FONTINFO/EE_CHAR_FONTINFO_CJK/EE_CHAR_FONTINFO_CTL
+            // doing here as static default will be done only once for LO 
runtime
+            SvxFontItem* pFont(new SvxFontItem(EE_CHAR_FONTINFO));
+            SvxFontItem* pFontCJK(new SvxFontItem(EE_CHAR_FONTINFO_CJK));
+            SvxFontItem* pFontCTL(new SvxFontItem(EE_CHAR_FONTINFO_CTL));
+
+            // Init DefFonts:
+            GetDefaultFonts(*pFont, *pFontCJK, *pFontCTL);
+
+            setItemAtItemInfoStatic(pFont, maItemInfos[EE_CHAR_FONTINFO - 
EE_ITEMS_START]);
+            setItemAtItemInfoStatic(pFontCJK, maItemInfos[EE_CHAR_FONTINFO_CJK 
- EE_ITEMS_START]);
+            setItemAtItemInfoStatic(pFontCTL, maItemInfos[EE_CHAR_FONTINFO_CTL 
- EE_ITEMS_START]);
+        }
+
+        virtual size_t size() const override { return maItemInfos.size(); }
+        virtual const ItemInfo& getItemInfo(size_t nIndex, SfxItemPool& 
/*rPool*/) override
+        {
+            const ItemInfo& rRetval(maItemInfos[nIndex]);
+
+            // return immediately if we have the static entry and Item
+            if (nullptr != rRetval.getItem())
+                return rRetval;
+
+            // check for dynamic ItemInfo creation, needed here for 
SvxNumBulletItem
+            if (EE_PARA_NUMBULLET == rRetval.getWhich())
+                return *new ItemInfoDynamic(
+                    rRetval,
+                    new SvxNumBulletItem( SvxNumRule( SvxNumRuleFlags::NONE, 
0, false ), EE_PARA_NUMBULLET ));
+
+            // return in any case
+            return rRetval;
+        }
+    };
+
+    static std::unique_ptr<ItemInfoPackageEditEngine> 
g_aItemInfoPackageEditEngine;
+    if (!g_aItemInfoPackageEditEngine)
+        g_aItemInfoPackageEditEngine.reset(new ItemInfoPackageEditEngine);
+    return *g_aItemInfoPackageEditEngine;
 }
 
 std::shared_ptr<SvxForbiddenCharactersTable> const & 
GlobalEditData::GetForbiddenCharsTable()
diff --git a/extensions/source/propctrlr/controlfontdialog.cxx 
b/extensions/source/propctrlr/controlfontdialog.cxx
index 9c3eddf4d1e2..3887190752d3 100644
--- a/extensions/source/propctrlr/controlfontdialog.cxx
+++ b/extensions/source/propctrlr/controlfontdialog.cxx
@@ -36,8 +36,7 @@ namespace pcr
     using namespace ::com::sun::star::beans;
 
     OControlFontDialog::OControlFontDialog(const Reference< XComponentContext 
>& _rxContext )
-        :OGenericUnoDialog( _rxContext )
-        ,m_pItemPoolDefaults(nullptr)
+    : OGenericUnoDialog( _rxContext )
     {
         registerProperty(PROPERTY_INTROSPECTEDOBJECT, 
static_cast<sal_Int32>(OwnPropertyId::INTROSPECTEDOBJECT),
             PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT,
@@ -53,7 +52,7 @@ namespace pcr
             if (m_xDialog)
             {
                 destroyDialog();
-                ControlCharacterDialog::destroyItemSet(m_pFontItems, 
m_pItemPool, m_pItemPoolDefaults);
+                ControlCharacterDialog::destroyItemSet(m_pFontItems, 
m_pItemPool);
             }
         }
     }
@@ -112,7 +111,7 @@ namespace pcr
 
     std::unique_ptr<weld::DialogController> 
OControlFontDialog::createDialog(const css::uno::Reference<css::awt::XWindow>& 
rParent)
     {
-        ControlCharacterDialog::createItemSet(m_pFontItems, m_pItemPool, 
m_pItemPoolDefaults);
+        ControlCharacterDialog::createItemSet(m_pFontItems, m_pItemPool);
 
         OSL_ENSURE(m_xControlModel.is(), "OControlFontDialog::createDialog: no 
introspectee set!");
         if (m_xControlModel.is())
diff --git a/extensions/source/propctrlr/controlfontdialog.hxx 
b/extensions/source/propctrlr/controlfontdialog.hxx
index 8dc52010273f..63bbae359de6 100644
--- a/extensions/source/propctrlr/controlfontdialog.hxx
+++ b/extensions/source/propctrlr/controlfontdialog.hxx
@@ -24,7 +24,6 @@
 
 class SfxItemSet;
 class SfxItemPool;
-class SfxPoolItem;
 
 namespace pcr
 {
@@ -45,8 +44,6 @@ namespace pcr
 
         std::unique_ptr<SfxItemSet> m_pFontItems;       // item set for the 
dialog
         rtl::Reference<SfxItemPool> m_pItemPool;            // item pool for 
the item set for the dialog
-        std::vector<SfxPoolItem*>*
-                                m_pItemPoolDefaults;    // pool defaults
 
     public:
         explicit OControlFontDialog(const css::uno::Reference< 
css::uno::XComponentContext >& _rxContext);
diff --git a/extensions/source/propctrlr/fontdialog.cxx 
b/extensions/source/propctrlr/fontdialog.cxx
index 9a7078a869ab..17401748f67a 100644
--- a/extensions/source/propctrlr/fontdialog.cxx
+++ b/extensions/source/propctrlr/fontdialog.cxx
@@ -492,78 +492,82 @@ namespace pcr
         }
     }
 
-    void ControlCharacterDialog::createItemSet(std::unique_ptr<SfxItemSet>& 
_rpSet, rtl::Reference<SfxItemPool>& _rpPool, std::vector<SfxPoolItem*>*& 
_rpDefaults)
+    static ItemInfoPackage& getItemInfoPackageCntChrDlg()
     {
-        // just to be sure...
-        _rpSet = nullptr;
-        _rpPool = nullptr;
-        _rpDefaults = nullptr;
-
-        // create and initialize the defaults
-        _rpDefaults = new 
std::vector<SfxPoolItem*>(FontItemIds::CFID_LAST_ITEM_ID - 
FontItemIds::CFID_FIRST_ITEM_ID + 1);
-
-        vcl::Font aDefaultVCLFont = 
Application::GetDefaultDevice()->GetSettings().GetStyleSettings().GetAppFont();
-
-        SfxPoolItem** pCounter = _rpDefaults->data();  // want to modify this 
without affecting the out param _rppDefaults
-        *pCounter++ = new SvxFontItem(aDefaultVCLFont.GetFamilyType(), 
aDefaultVCLFont.GetFamilyName(), aDefaultVCLFont.GetStyleName(), 
aDefaultVCLFont.GetPitch(), aDefaultVCLFont.GetCharSet(), 
FontItemIds::CFID_FONT);
-        *pCounter++ = new SvxFontHeightItem(aDefaultVCLFont.GetFontHeight(), 
100, FontItemIds::CFID_HEIGHT);
-        *pCounter++ = new SvxWeightItem(aDefaultVCLFont.GetWeight(), 
FontItemIds::CFID_WEIGHT);
-        *pCounter++ = new SvxPostureItem(aDefaultVCLFont.GetItalic(), 
FontItemIds::CFID_POSTURE);
-        *pCounter++ = new 
SvxLanguageItem(Application::GetSettings().GetUILanguageTag().getLanguageType(),
 FontItemIds::CFID_LANGUAGE);
-        *pCounter++ = new SvxUnderlineItem(aDefaultVCLFont.GetUnderline(), 
FontItemIds::CFID_UNDERLINE);
-        *pCounter++ = new SvxCrossedOutItem(aDefaultVCLFont.GetStrikeout(), 
FontItemIds::CFID_STRIKEOUT);
-        *pCounter++ = new 
SvxWordLineModeItem(aDefaultVCLFont.IsWordLineMode(), 
FontItemIds::CFID_WORDLINEMODE);
-        *pCounter++ = new SvxColorItem(aDefaultVCLFont.GetColor(), 
FontItemIds::CFID_CHARCOLOR);
-        *pCounter++ = new SvxCharReliefItem(aDefaultVCLFont.GetRelief(), 
FontItemIds::CFID_RELIEF);
-        *pCounter++ = new 
SvxEmphasisMarkItem(aDefaultVCLFont.GetEmphasisMark(), 
FontItemIds::CFID_EMPHASIS);
-
-        *pCounter++ = new SvxFontItem(aDefaultVCLFont.GetFamilyType(), 
aDefaultVCLFont.GetFamilyName(), aDefaultVCLFont.GetStyleName(), 
aDefaultVCLFont.GetPitch(), aDefaultVCLFont.GetCharSet(), 
FontItemIds::CFID_CJK_FONT);
-        *pCounter++ = new SvxFontHeightItem(aDefaultVCLFont.GetFontHeight(), 
100, FontItemIds::CFID_CJK_HEIGHT);
-        *pCounter++ = new SvxWeightItem(aDefaultVCLFont.GetWeight(), 
FontItemIds::CFID_CJK_WEIGHT);
-        *pCounter++ = new SvxPostureItem(aDefaultVCLFont.GetItalic(), 
FontItemIds::CFID_CJK_POSTURE);
-        *pCounter++ = new 
SvxLanguageItem(Application::GetSettings().GetUILanguageTag().getLanguageType(),
 FontItemIds::CFID_CJK_LANGUAGE);
-
-        *pCounter++ = new SvxCaseMapItem(SvxCaseMap::NotMapped, 
FontItemIds::CFID_CASEMAP);
-        *pCounter++ = new SvxContourItem(false, FontItemIds::CFID_CONTOUR);
-        *pCounter++ = new SvxShadowedItem(false, FontItemIds::CFID_SHADOWED);
-
-        *pCounter++ = new SvxFontListItem (new 
FontList(Application::GetDefaultDevice()), FontItemIds::CFID_FONTLIST);
-
-        // create the pool
-        static SfxItemInfo const aItemInfos[FontItemIds::CFID_LAST_ITEM_ID - 
FontItemIds::CFID_FIRST_ITEM_ID + 1] =
+        class ItemInfoPackageCntChrDlg : public ItemInfoPackage
         {
-            // _nItemInfoSlotID, _nItemInfoFlags
-            { SID_ATTR_CHAR_FONT,               SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_FONT
-            { SID_ATTR_CHAR_FONTHEIGHT,         SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_HEIGHT
-            { SID_ATTR_CHAR_WEIGHT,             SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_WEIGHT
-            { SID_ATTR_CHAR_POSTURE,            SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_POSTURE
-            { SID_ATTR_CHAR_LANGUAGE,           SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_LANGUAGE
-            { SID_ATTR_CHAR_UNDERLINE,          SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_UNDERLINE
-            { SID_ATTR_CHAR_STRIKEOUT,          SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_STRIKEOUT
-            { SID_ATTR_CHAR_WORDLINEMODE,       SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_WORDLINEMODE
-            { SID_ATTR_CHAR_COLOR,              SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CHARCOLOR
-            { SID_ATTR_CHAR_RELIEF,             SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_RELIEF
-            { SID_ATTR_CHAR_EMPHASISMARK,       SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_EMPHASIS
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CJK_FONT
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CJK_HEIGHT
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CJK_WEIGHT
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CJK_POSTURE
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CJK_LANGUAGE
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CASEMAP
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_CONTOUR
-            { 0,                                SFX_ITEMINFOFLAG_NONE }, // 
FontItemIds::CFID_SHADOWED
-            { SID_ATTR_CHAR_FONTLIST,           SFX_ITEMINFOFLAG_NONE }  // 
FontItemIds::CFID_FONTLIST
+            vcl::Font 
maDefaultVCLFont{Application::GetDefaultDevice()->GetSettings().GetStyleSettings().GetAppFont()};
+            typedef std::array<ItemInfoStatic, FontItemIds::CFID_LAST_ITEM_ID 
- FontItemIds::CFID_FIRST_ITEM_ID + 1> ItemInfoArrayCntChrDlg;
+            ItemInfoArrayCntChrDlg maItemInfos {{
+                // m_nWhich, m_pItem, m_nSlotID, m_nItemInfoFlags
+                { FontItemIds::CFID_FONT, new 
SvxFontItem(maDefaultVCLFont.GetFamilyType(), maDefaultVCLFont.GetFamilyName(), 
maDefaultVCLFont.GetStyleName(), maDefaultVCLFont.GetPitch(), 
maDefaultVCLFont.GetCharSet(), FontItemIds::CFID_FONT), SID_ATTR_CHAR_FONT, 
SFX_ITEMINFOFLAG_NONE },
+                { FontItemIds::CFID_HEIGHT, new 
SvxFontHeightItem(maDefaultVCLFont.GetFontHeight(), 100, 
FontItemIds::CFID_HEIGHT), SID_ATTR_CHAR_FONTHEIGHT, SFX_ITEMINFOFLAG_NONE },
+                { FontItemIds::CFID_WEIGHT, new 
SvxWeightItem(maDefaultVCLFont.GetWeight(), FontItemIds::CFID_WEIGHT), 
SID_ATTR_CHAR_WEIGHT, SFX_ITEMINFOFLAG_NONE },
+                { FontItemIds::CFID_POSTURE, new 
SvxPostureItem(maDefaultVCLFont.GetItalic(), FontItemIds::CFID_POSTURE), 
SID_ATTR_CHAR_POSTURE, SFX_ITEMINFOFLAG_NONE },
+                { FontItemIds::CFID_LANGUAGE, new 
SvxLanguageItem(Application::GetSettings().GetUILanguageTag().getLanguageType(),
 FontItemIds::CFID_LANGUAGE), SID_ATTR_CHAR_LANGUAGE, SFX_ITEMINFOFLAG_NONE },
+                { FontItemIds::CFID_UNDERLINE, new 
SvxUnderlineItem(maDefaultVCLFont.GetUnderline(), FontItemIds::CFID_UNDERLINE), 
SID_ATTR_CHAR_UNDERLINE, SFX_ITEMINFOFLAG_NONE },
-e 
... etc. - the rest is truncated

Reply via email to