[Libreoffice-commits] core.git: basctl/source chart2/source filter/source include/svx reportdesign/source sc/CppunitTest_sc_subsequent_export_test.mk sc/source sd/qa sd/source svx/inc svx/source sw/source

Armin Le Grand Armin.Le.Grand at cib.de
Fri May 25 10:32:02 UTC 2018


 basctl/source/dlged/dlged.cxx                                |    3 
 basctl/source/dlged/dlgedobj.cxx                             |    4 
 basctl/source/dlged/propbrw.cxx                              |    2 
 chart2/source/controller/main/ChartController_Tools.cxx      |    4 
 chart2/source/controller/main/ChartTransferable.cxx          |    2 
 chart2/source/controller/main/DrawCommandDispatch.cxx        |    3 
 chart2/source/controller/main/SelectionHelper.cxx            |   10 
 filter/source/msfilter/eschesdo.cxx                          |    2 
 filter/source/msfilter/svdfppt.cxx                           |    2 
 include/svx/scene3d.hxx                                      |   16 
 include/svx/sdr/properties/properties.hxx                    |    2 
 include/svx/svditer.hxx                                      |   34 -
 include/svx/svdoashp.hxx                                     |    3 
 include/svx/svdobj.hxx                                       |   27 
 include/svx/svdoedge.hxx                                     |    3 
 include/svx/svdograf.hxx                                     |    3 
 include/svx/svdogrp.hxx                                      |   17 
 include/svx/svdoole2.hxx                                     |    3 
 include/svx/svdotext.hxx                                     |    4 
 include/svx/svdpage.hxx                                      |   58 +-
 include/svx/svdtypes.hxx                                     |   14 
 reportdesign/source/core/sdr/RptObject.cxx                   |    6 
 reportdesign/source/ui/misc/UITools.cxx                      |    4 
 reportdesign/source/ui/report/ReportController.cxx           |    6 
 reportdesign/source/ui/report/ReportSection.cxx              |    5 
 reportdesign/source/ui/report/ViewsWindow.cxx                |    2 
 reportdesign/source/ui/report/dlgedfunc.cxx                  |    4 
 reportdesign/source/ui/report/propbrw.cxx                    |    2 
 sc/CppunitTest_sc_subsequent_export_test.mk                  |    1 
 sc/source/core/data/documen5.cxx                             |   14 
 sc/source/core/data/documen9.cxx                             |   15 
 sc/source/core/data/document.cxx                             |    2 
 sc/source/core/data/drwlayer.cxx                             |   33 -
 sc/source/core/data/postit.cxx                               |    6 
 sc/source/core/tool/charthelper.cxx                          |   12 
 sc/source/core/tool/chartlock.cxx                            |    2 
 sc/source/core/tool/detfunc.cxx                              |   14 
 sc/source/filter/excel/xiescher.cxx                          |    2 
 sc/source/filter/html/htmlexp2.cxx                           |    2 
 sc/source/filter/inc/xcl97rec.hxx                            |   10 
 sc/source/filter/xcl97/xcl97rec.cxx                          |   17 
 sc/source/ui/Accessibility/AccessibleDocument.cxx            |    4 
 sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx |    2 
 sc/source/ui/app/client.cxx                                  |    2 
 sc/source/ui/app/drwtrans.cxx                                |   14 
 sc/source/ui/docshell/dbdocfun.cxx                           |    2 
 sc/source/ui/drawfunc/fupoor.cxx                             |    2 
 sc/source/ui/drawfunc/fusel2.cxx                             |    4 
 sc/source/ui/navipi/content.cxx                              |    6 
 sc/source/ui/uitest/uiobject.cxx                             |    2 
 sc/source/ui/undo/undotab.cxx                                |    2 
 sc/source/ui/unoobj/ChartTools.cxx                           |    2 
 sc/source/ui/unoobj/chartuno.cxx                             |    6 
 sc/source/ui/unoobj/docuno.cxx                               |    2 
 sc/source/ui/unoobj/shapeuno.cxx                             |   16 
 sc/source/ui/unoobj/viewuno.cxx                              |    6 
 sc/source/ui/view/dbfunc4.cxx                                |    2 
 sc/source/ui/view/drawview.cxx                               |    6 
 sc/source/ui/view/tabvwshg.cxx                               |    4 
 sc/source/ui/view/viewfun5.cxx                               |    2 
 sc/source/ui/view/viewfun7.cxx                               |    5 
 sd/qa/unit/data/xml/tdf100491_0.xml                          |   32 -
 sd/source/core/CustomAnimationCloner.cxx                     |    4 
 sd/source/core/CustomAnimationEffect.cxx                     |    4 
 sd/source/core/EffectMigration.cxx                           |   96 ++-
 sd/source/core/drawdoc2.cxx                                  |    4 
 sd/source/core/drawdoc3.cxx                                  |    2 
 sd/source/core/drawdoc4.cxx                                  |    8 
 sd/source/core/sdpage.cxx                                    |    8 
 sd/source/core/sdpage2.cxx                                   |    6 
 sd/source/core/undo/undoobjects.cxx                          |   10 
 sd/source/filter/html/htmlex.cxx                             |    8 
 sd/source/filter/ppt/ppt97animations.cxx                     |    4 
 sd/source/filter/ppt/pptin.cxx                               |    2 
 sd/source/ui/animations/motionpathtag.cxx                    |    7 
 sd/source/ui/app/sdmod2.cxx                                  |    2 
 sd/source/ui/app/sdxfer.cxx                                  |    2 
 sd/source/ui/dlg/sdtreelb.cxx                                |   10 
 sd/source/ui/docshell/docshel4.cxx                           |    2 
 sd/source/ui/docshell/docshell.cxx                           |    2 
 sd/source/ui/func/fuconbez.cxx                               |    2 
 sd/source/ui/func/fuinsert.cxx                               |    2 
 sd/source/ui/func/fupoor.cxx                                 |    4 
 sd/source/ui/func/fusel.cxx                                  |    4 
 sd/source/ui/func/futempl.cxx                                |    2 
 sd/source/ui/func/futext.cxx                                 |    4 
 sd/source/ui/slideshow/slideshowimpl.cxx                     |    4 
 sd/source/ui/slidesorter/controller/SlsListener.cxx          |    2 
 sd/source/ui/table/tablefunction.cxx                         |    2 
 sd/source/ui/tools/PreviewRenderer.cxx                       |    4 
 sd/source/ui/unoidl/SdUnoDrawView.cxx                        |   10 
 sd/source/ui/unoidl/unomodel.cxx                             |   10 
 sd/source/ui/unoidl/unoobj.cxx                               |   12 
 sd/source/ui/unoidl/unopage.cxx                              |   26 
 sd/source/ui/view/DocumentRenderer.cxx                       |    4 
 sd/source/ui/view/OutlinerIterator.cxx                       |    8 
 sd/source/ui/view/drawview.cxx                               |    2 
 sd/source/ui/view/drviews4.cxx                               |    2 
 sd/source/ui/view/drviewse.cxx                               |    8 
 sd/source/ui/view/sdview.cxx                                 |   32 -
 sd/source/ui/view/sdview2.cxx                                |    8 
 sd/source/ui/view/sdview3.cxx                                |   12 
 sd/source/ui/view/sdview4.cxx                                |    6 
 svx/inc/sdr/properties/attributeproperties.hxx               |    3 
 svx/inc/sdr/properties/graphicproperties.hxx                 |    3 
 svx/inc/sdr/properties/oleproperties.hxx                     |    3 
 svx/source/customshapes/EnhancedCustomShapeEngine.cxx        |    2 
 svx/source/engine3d/helperhittest3d.cxx                      |    4 
 svx/source/engine3d/obj3d.cxx                                |   10 
 svx/source/engine3d/scene3d.cxx                              |   88 +--
 svx/source/engine3d/view3d.cxx                               |   18 
 svx/source/form/fmobj.cxx                                    |   32 -
 svx/source/form/fmpgeimp.cxx                                 |    6 
 svx/source/form/fmshell.cxx                                  |    2 
 svx/source/form/fmshimp.cxx                                  |    8 
 svx/source/form/fmundo.cxx                                   |    8 
 svx/source/form/fmview.cxx                                   |    2 
 svx/source/form/fmvwimp.cxx                                  |   16 
 svx/source/form/navigatortree.cxx                            |    6 
 svx/source/form/navigatortreemodel.cxx                       |    4 
 svx/source/inc/fmobj.hxx                                     |    3 
 svx/source/sdr/contact/objectcontactofpageview.cxx           |    8 
 svx/source/sdr/contact/viewcontactofsdrobj.cxx               |    4 
 svx/source/sdr/contact/viewcontactofsdrpathobj.cxx           |    2 
 svx/source/sdr/contact/viewobjectcontactofgraphic.cxx        |    2 
 svx/source/sdr/properties/attributeproperties.cxx            |   61 --
 svx/source/sdr/properties/graphicproperties.cxx              |   17 
 svx/source/sdr/properties/itemsettools.cxx                   |    2 
 svx/source/sdr/properties/oleproperties.cxx                  |   19 
 svx/source/sdr/properties/properties.cxx                     |    6 
 svx/source/svdraw/svdcrtv.cxx                                |    8 
 svx/source/svdraw/svdedtv.cxx                                |    6 
 svx/source/svdraw/svdedtv1.cxx                               |   10 
 svx/source/svdraw/svdedtv2.cxx                               |   14 
 svx/source/svdraw/svdedxv.cxx                                |    2 
 svx/source/svdraw/svdetc.cxx                                 |    2 
 svx/source/svdraw/svditer.cxx                                |  118 ++--
 svx/source/svdraw/svdmark.cxx                                |    2 
 svx/source/svdraw/svdmodel.cxx                               |    2 
 svx/source/svdraw/svdmrkv.cxx                                |    4 
 svx/source/svdraw/svdoashp.cxx                               |    7 
 svx/source/svdraw/svdobj.cxx                                 |  127 ++--
 svx/source/svdraw/svdoedge.cxx                               |   99 ++-
 svx/source/svdraw/svdograf.cxx                               |   31 -
 svx/source/svdraw/svdogrp.cxx                                |  303 +++++++----
 svx/source/svdraw/svdoole2.cxx                               |   31 -
 svx/source/svdraw/svdotext.cxx                               |   19 
 svx/source/svdraw/svdotextdecomposition.cxx                  |   15 
 svx/source/svdraw/svdouno.cxx                                |    4 
 svx/source/svdraw/svdpage.cxx                                |  240 ++++----
 svx/source/svdraw/svdpagv.cxx                                |   10 
 svx/source/svdraw/svdsnpv.cxx                                |    2 
 svx/source/svdraw/svdundo.cxx                                |   13 
 svx/source/svdraw/svdviter.cxx                               |    2 
 svx/source/svdraw/svdxcgv.cxx                                |   12 
 svx/source/table/tablecontroller.cxx                         |    2 
 svx/source/unodraw/UnoGraphicExporter.cxx                    |    9 
 svx/source/unodraw/unopage.cxx                               |    1 
 svx/source/unodraw/unoshap2.cxx                              |    2 
 svx/source/unodraw/unoshap3.cxx                              |    4 
 svx/source/unodraw/unoshape.cxx                              |   57 +-
 svx/source/unodraw/unoshtxt.cxx                              |    6 
 sw/source/core/doc/docdraw.cxx                               |    4 
 sw/source/core/doc/textboxhelper.cxx                         |    2 
 sw/source/core/draw/dcontact.cxx                             |   16 
 sw/source/core/draw/dflyobj.cxx                              |    4 
 sw/source/core/draw/dview.cxx                                |    2 
 sw/source/core/frmedt/fecopy.cxx                             |   10 
 sw/source/core/frmedt/feshview.cxx                           |    4 
 sw/source/core/layout/flylay.cxx                             |    8 
 sw/source/core/layout/frmtool.cxx                            |    6 
 sw/source/filter/html/htmldrawreader.cxx                     |    3 
 sw/source/filter/ww8/docxsdrexport.cxx                       |   17 
 sw/source/filter/ww8/rtfattributeoutput.cxx                  |   17 
 sw/source/filter/ww8/wrtw8esh.cxx                            |   16 
 sw/source/filter/ww8/ww8graf.cxx                             |    4 
 sw/source/filter/ww8/ww8graf2.cxx                            |    4 
 sw/source/filter/xml/swxml.cxx                               |    2 
 sw/source/uibase/dochdl/swdtflvr.cxx                         |    2 
 sw/source/uibase/shells/drwbassh.cxx                         |    2 
 sw/source/uibase/uno/unotxvw.cxx                             |    2 
 181 files changed, 1324 insertions(+), 1153 deletions(-)

New commits:
commit 4b4942224b550235da228655677b5c068a053254
Author: Armin Le Grand <Armin.Le.Grand at cib.de>
Date:   Mon Apr 16 22:34:50 2018 +0200

    SOSAW080: Derive SdrObjGroup from SdrObjList
    
    Also simplify parent/child relationships, get rid
    of double data (SdrPage/Parent infos in SdrObjects,
    also in SdrObjList). This is all not needed - when a
    SdrObject is inserted to a SdrPage, get SdrPage by
    traveling over parents (no double info, member as soon
    as inserted, ...).
    More cleanups/reworks included, will need some more
    cleanups, too.
    
    Stabilizing: SetRectsDirty/DefaultStyleSheet
    
    Had to correct the SetRectsDirty stuff for 3D due to
    going down the hierarchy while the 2D implementation
    goes the other direction -> endless loops. Added special
    handling for 3D stuff for now (will be chnaged again when
    SnapRect is no longer needed at SdrObject level).
    Also had to adapt how the DefaultStyleSheet is set at
    incarnated SdrObjects - better: their properties. Since
    we now always have a SdrModel, it is possible to correctly
    initialize with the correct default StyleSheet from that
    SdrModel.
    This needs to be done after ForceDefaultAttributes and in a
    way that again deletes Items that are set in the StyleSheet.
    This leads to an error in CppunitTest_sd_import_tests where
    I checked tdf100491 - it is okay and thus I change the control
    instance of the imported, XML-dumped file.
    The less hard attributes, the better for Styles in general.
    
    Cleanup of comments for last two commits
    
    Corrected SvxShape::getParent()
    
    Needed to get the direct parent, so test for SdrObject
    first (to get SdrObjGroup/E3DScene), for SdrPage second
    
    Fixed CppunitTest_sc_subsequent_export_test
    
    Several problems arose. The used SdrCaptionObj was
    Cloned, but the clone not inserted to a SdrPage. This
    leads to not being able to access a UNO API imlementation
    of the SdrPage (SvxPage) on lower levels.
    It worked before due to SdrObject having a SdrPage*
    additionally to being added to a SdrPage - this is exactly
    the main cleanup this change does.
    Looked for why it is cloned, could see no reasons. The
    SdrCaptionObj exists during all im/export, not difference
    to other SdrObjects (that do not get cloned). It is not
    changed in any way. It *might* be to suppress a crash that
    happened due to UNO API Service emfio/emfio not being
    available in the UnitTest scenario. Interestingly it
    did not crash with the cloned SdrCaptionObj, but the
    Graphic exported was probably wrong.
    Fixed by no longer Cloning the SdrCaptionObj and adding
    emfio/emfio UNO API Service.
    
    d139f821a5b39535a3e7b9c6261df7e18f8ae8ac
    910e7f4bc628a715fda7545dffaf3369d5e76ea0
    ca1de01b723051e09ac37d7ec7bba978beea41c5
    3a76da1471dfe75e69847f64a6a3519ad21c8c9c
    
    Change-Id: I986586e326b563acebf00d931a7084c6eb09e5f8
    Reviewed-on: https://gerrit.libreoffice.org/54689
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Armin Le Grand <Armin.Le.Grand at cib.de>

diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
index 5588752c4054..1e6b11d53a19 100644
--- a/basctl/source/dlged/dlged.cxx
+++ b/basctl/source/dlged/dlged.cxx
@@ -615,8 +615,7 @@ void DlgEditor::CreateDefaultObject()
     SdrObject* pObj = SdrObjFactory::MakeNewObject(
         *pDlgEdModel,
         pDlgEdView->GetCurrentObjInventor(),
-        pDlgEdView->GetCurrentObjIdentifier(),
-        pDlgEdPage);
+        pDlgEdView->GetCurrentObjIdentifier());
 
     if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pObj))
     {
diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx
index 008260b0bd21..8052f3cb159a 100644
--- a/basctl/source/dlged/dlgedobj.cxx
+++ b/basctl/source/dlged/dlgedobj.cxx
@@ -955,7 +955,7 @@ bool DlgEdObj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
 void DlgEdObj::SetDefaults()
 {
     // set parent form
-    pDlgEdForm = static_cast<DlgEdPage*>(GetPage())->GetDlgEdForm();
+    pDlgEdForm = static_cast<DlgEdPage*>(getSdrPageFromSdrObject())->GetDlgEdForm();
 
     if ( pDlgEdForm )
     {
@@ -1379,7 +1379,7 @@ void DlgEdForm::PositionAndSizeChange( const beans::PropertyChangeEvent& evt )
 
 void DlgEdForm::UpdateStep()
 {
-    SdrPage* pSdrPage = GetPage();
+    SdrPage* pSdrPage = getSdrPageFromSdrObject();
 
     if ( pSdrPage )
     {
diff --git a/basctl/source/dlged/propbrw.cxx b/basctl/source/dlged/propbrw.cxx
index 65bc60515fbf..74566308ca78 100644
--- a/basctl/source/dlged/propbrw.cxx
+++ b/basctl/source/dlged/propbrw.cxx
@@ -251,7 +251,7 @@ Sequence< Reference< XInterface > >
         std::unique_ptr<SdrObjListIter> pGroupIterator;
         if (pCurrent->IsGroupObject())
         {
-            pGroupIterator.reset(new SdrObjListIter(*pCurrent->GetSubList()));
+            pGroupIterator.reset(new SdrObjListIter(pCurrent->GetSubList()));
             pCurrent = pGroupIterator->IsMore() ? pGroupIterator->Next() : nullptr;
         }
 
diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index 8c19e816dad4..a89f2ef70821 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -393,7 +393,7 @@ void ChartController::impl_PasteShapes( SdrModel* pModel )
             for ( sal_uInt16 i = 0; i < nCount; ++i )
             {
                 const SdrPage* pPage = pModel->GetPage( i );
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
                 while ( aIter.IsMore() )
                 {
                     SdrObject* pObj(aIter.Next());
@@ -402,8 +402,6 @@ void ChartController::impl_PasteShapes( SdrModel* pModel )
 
                     if ( pNewObj )
                     {
-                        pNewObj->SetPage( pDestPage );
-
                         // set position
                         Reference< drawing::XShape > xShape( pNewObj->getUnoShape(), uno::UNO_QUERY );
                         if ( xShape.is() )
diff --git a/chart2/source/controller/main/ChartTransferable.cxx b/chart2/source/controller/main/ChartTransferable.cxx
index 4888c4802b9f..90660c07e1cb 100644
--- a/chart2/source/controller/main/ChartTransferable.cxx
+++ b/chart2/source/controller/main/ChartTransferable.cxx
@@ -130,7 +130,7 @@ bool ChartTransferable::WriteObject( tools::SvRef<SotStorageStream>& rxOStm, voi
                     for ( sal_uInt16 i = 0; i < nCount; ++i )
                     {
                         const SdrPage* pPage = pMarkedObjModel->GetPage( i );
-                        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+                        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
                         while ( aIter.IsMore() )
                         {
                             SdrObject* pObj = aIter.Next();
diff --git a/chart2/source/controller/main/DrawCommandDispatch.cxx b/chart2/source/controller/main/DrawCommandDispatch.cxx
index 6c59620ce6c1..b1fb795be20a 100644
--- a/chart2/source/controller/main/DrawCommandDispatch.cxx
+++ b/chart2/source/controller/main/DrawCommandDispatch.cxx
@@ -429,8 +429,7 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID )
             pObj = SdrObjFactory::MakeNewObject(
                 pDrawModelWrapper->getSdrModel(),
                 pDrawViewWrapper->GetCurrentObjInventor(),
-                pDrawViewWrapper->GetCurrentObjIdentifier(),
-                pPage);
+                pDrawViewWrapper->GetCurrentObjIdentifier());
 
             if ( pObj )
             {
diff --git a/chart2/source/controller/main/SelectionHelper.cxx b/chart2/source/controller/main/SelectionHelper.cxx
index f7918d2ba4d2..9be4ae4e3504 100644
--- a/chart2/source/controller/main/SelectionHelper.cxx
+++ b/chart2/source/controller/main/SelectionHelper.cxx
@@ -333,7 +333,7 @@ bool SelectionHelper::findNamedParent( SdrObject*& pInOutObject
         SdrObjList* pObjList = pObj->getParentOfSdrObject();
         if( !pObjList )
             return false;
-        SdrObject* pOwner = pObjList->GetOwnerObj();
+        SdrObject* pOwner = pObjList->getSdrObjectFromSdrObjList();
         if( !pOwner )
             return false;
         pObj = pOwner;
@@ -483,7 +483,7 @@ SdrObject* SelectionHelper::getMarkHandlesObject( SdrObject* pObj )
     SdrObjList* pSubList = pObj->GetSubList();
     if(pSubList)
     {
-        SdrObjListIter aIterator(*pSubList, SdrIterMode::Flat);
+        SdrObjListIter aIterator(pSubList, SdrIterMode::Flat);
         while (aIterator.IsMore())
         {
             SdrObject* pMarkHandles = SelectionHelper::getMarkHandlesObject( aIterator.Next() );
@@ -508,7 +508,7 @@ SdrObject* SelectionHelper::getObjectToMark()
         SdrObjList* pSubList = pObj->GetSubList();
         if(pSubList)
         {
-            SdrObjListIter aIterator(*pSubList, SdrIterMode::Flat);
+            SdrObjListIter aIterator(pSubList, SdrIterMode::Flat);
             while (aIterator.IsMore())
             {
                 SdrObject* pMarkHandles = SelectionHelper::getMarkHandlesObject( aIterator.Next() );
@@ -539,7 +539,7 @@ E3dScene* SelectionHelper::getSceneToRotate( SdrObject* pObj )
             SdrObjList* pSubList = pObj->GetSubList();
             if(pSubList)
             {
-                SdrObjListIter aIterator(*pSubList, SdrIterMode::DeepWithGroups);
+                SdrObjListIter aIterator(pSubList, SdrIterMode::DeepWithGroups);
                 while( aIterator.IsMore() && !pRotateable )
                 {
                     SdrObject* pSubObj = aIterator.Next();
@@ -628,7 +628,7 @@ bool SelectionHelper::getMarkHandles( SdrHdlList& rHdlList )
         return false;
     }
 
-    SdrObjListIter aIterator(*pSubList, SdrIterMode::Flat);
+    SdrObjListIter aIterator(pSubList, SdrIterMode::Flat);
 
     while (aIterator.IsMore())
     {
diff --git a/filter/source/msfilter/eschesdo.cxx b/filter/source/msfilter/eschesdo.cxx
index db2c64d8b4f9..2e390b724d4e 100644
--- a/filter/source/msfilter/eschesdo.cxx
+++ b/filter/source/msfilter/eschesdo.cxx
@@ -1015,7 +1015,7 @@ ImplEESdrObject::ImplEESdrObject( ImplEESdrWriter& rEx,
     mbEmptyPresObj( false ),
     mbOOXML(bOOXML)
 {
-    SdrPage* pPage = rObj.GetPage();
+    SdrPage* pPage = rObj.getSdrPageFromSdrObject();
     DBG_ASSERT( pPage, "ImplEESdrObject::ImplEESdrObject: no SdrPage" );
     if( pPage && rEx.ImplInitPage( *pPage ) )
     {
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 3aaf6c44dcba..67dddd3a5fd1 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -7570,7 +7570,7 @@ SdrObject* SdrPowerPointImport::CreateTable( SdrObject* pGroup, const sal_uInt32
     std::set< sal_Int32 > aRows;
     std::set< sal_Int32 > aColumns;
 
-    SdrObjListIter aGroupIter( *pSubList, SdrIterMode::DeepNoGroups, false );
+    SdrObjListIter aGroupIter( pSubList, SdrIterMode::DeepNoGroups, false );
     while( aGroupIter.IsMore() )
     {
         const SdrObject* pObj( aGroupIter.Next() );
diff --git a/include/svx/scene3d.hxx b/include/svx/scene3d.hxx
index 044b27d5368f..1ebf4ac9728b 100644
--- a/include/svx/scene3d.hxx
+++ b/include/svx/scene3d.hxx
@@ -95,6 +95,14 @@ protected:
 public:
     E3dScene(SdrModel& rSdrModel);
 
+    // derived from SdrObjList
+    virtual SdrPage* getSdrPageFromSdrObjList() const override;
+    virtual SdrObject* getSdrObjectFromSdrObjList() const override;
+    virtual SdrModel& getSdrModelFromSdrObjList() const override;
+
+    // derived from SdrObject
+    virtual SdrObjList* getChildrenOfSdrObject() const override;
+
     virtual void SetBoundRectDirty() override;
 
     // access to cleanup of depth mapper
@@ -180,10 +188,12 @@ public:
     virtual SdrObject* RemoveObject(size_t nObjNum) override;
 
     // needed for group functionality
-    virtual void SetRectsDirty(bool bNotMyself = false) override;
+    virtual void SetRectsDirty(bool bNotMyself = false, bool bRecursive = true) override;
     virtual void NbcSetLayer(SdrLayerID nLayer) override;
-    virtual void setParentOfSdrObject(SdrObjList* pNewObjList) override;
-    virtual void SetPage(SdrPage* pNewPage) override;
+
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
+
     virtual SdrObjList* GetSubList() const override;
     void Insert3DObj(E3dObject* p3DObj);
     void Remove3DObj(E3dObject const * p3DObj);
diff --git a/include/svx/sdr/properties/properties.hxx b/include/svx/sdr/properties/properties.hxx
index 5f9a63484d43..bdb2976cd1ee 100644
--- a/include/svx/sdr/properties/properties.hxx
+++ b/include/svx/sdr/properties/properties.hxx
@@ -82,6 +82,8 @@ namespace sdr
             SdrObject&                                      mrObject;
 
         protected:
+            // apply the correct SfyStyleSheet from SdrObject's SdrModel
+            virtual void applyDefaultStyleSheetFromSdrModel();
 
             // create a new object specific itemset with object specific ranges.
             virtual std::unique_ptr<SfxItemSet> CreateObjectSpecificItemSet(SfxItemPool& pPool) = 0;
diff --git a/include/svx/svditer.hxx b/include/svx/svditer.hxx
index 6f87776401ce..e89efccf54c3 100644
--- a/include/svx/svditer.hxx
+++ b/include/svx/svditer.hxx
@@ -27,6 +27,7 @@
 
 class SdrObjList;
 class SdrObject;
+class SdrPage;
 class SdrMarkList;
 
 // SdrObjListIter methods:
@@ -37,41 +38,36 @@ enum class SdrIterMode { Flat, DeepWithGroups, DeepNoGroups };
 
 class SVX_DLLPUBLIC SdrObjListIter
 {
-    std::vector<SdrObject*>     maObjList;
-    sal_uInt32                  mnIndex;
-    bool                        mbReverse;
+    std::vector< const SdrObject* > maObjList;
+    size_t                          mnIndex;
+    bool                            mbReverse;
+    bool                            mbUseZOrder;
 
-    void ImpProcessObjectList(const SdrObjList& rObjList, SdrIterMode eMode, bool bUseZOrder);
+    void ImpProcessObjectList(const SdrObjList& rSdrObjList, SdrIterMode eMode);
     void ImpProcessMarkList(const SdrMarkList& rMarkList, SdrIterMode eMode);
-    void ImpProcessObj(SdrObject* pObj, SdrIterMode eMode, bool bUseZOrder);
+    void ImpProcessObj(const SdrObject& rSdrObject, SdrIterMode eMode);
 
 public:
-    explicit SdrObjListIter(const SdrObjList& rObjList, SdrIterMode eMode = SdrIterMode::DeepNoGroups, bool bReverse = false);
-    /** This variant lets the user choose the order in which to travel over
-        the objects.
-        @param bUseZOrder
-            When <TRUE/> then the z-order defines the order of iteration.
-            Otherwise the navigation position as returned by
-            SdrObject::GetNavigationPosition() is used.
-    */
-    SdrObjListIter(const SdrObjList& rObjList, bool bUseZOrder, SdrIterMode eMode);
+    explicit SdrObjListIter(const SdrObjList* pObjList, SdrIterMode eMode = SdrIterMode::DeepNoGroups, bool bReverse = false);
+    explicit SdrObjListIter(const SdrObjList* pObjList, bool bUseZOrder, SdrIterMode eMode = SdrIterMode::DeepNoGroups, bool bReverse = false);
 
     /* SJ: the following function can now be used with every
        SdrObject and is no longer limited to group objects */
-    explicit SdrObjListIter(const SdrObject& rObj, SdrIterMode eMode = SdrIterMode::DeepNoGroups);
+    explicit SdrObjListIter(const SdrObject& rSdrObject, SdrIterMode eMode = SdrIterMode::DeepNoGroups, bool bReverse = false);
+    explicit SdrObjListIter(const SdrPage* pSdrPage, SdrIterMode eMode = SdrIterMode::DeepNoGroups, bool bReverse = false);
 
-    /** Iterates over a list of marked objects received from the SdrMarkView. */
+    /** Iterates over a list of marked objects received from the SdrMarkView. TTTT used in sc */
     explicit SdrObjListIter(const SdrMarkList& rMarkList, SdrIterMode eMode = SdrIterMode::DeepNoGroups);
 
     void Reset() { mnIndex = (mbReverse ? maObjList.size() : 0L); }
     bool IsMore() const { return (mbReverse ? mnIndex != 0 : ( mnIndex < maObjList.size())); }
     SdrObject* Next()
     {
-        sal_uInt32 idx = (mbReverse ? --mnIndex : mnIndex++);
-        return idx < maObjList.size() ? maObjList[idx] : nullptr;
+        const size_t idx(mbReverse ? --mnIndex : mnIndex++);
+        return (idx < maObjList.size()) ? const_cast< SdrObject* >(maObjList[idx]) : nullptr;
     }
 
-    sal_uInt32 Count() { return maObjList.size(); }
+    size_t Count() { return maObjList.size(); }
 };
 
 #endif // INCLUDED_SVX_SVDITER_HXX
diff --git a/include/svx/svdoashp.hxx b/include/svx/svdoashp.hxx
index 364b8ce7795a..e82e5018d137 100644
--- a/include/svx/svdoashp.hxx
+++ b/include/svx/svdoashp.hxx
@@ -224,7 +224,8 @@ public:
 
     virtual SdrObject* DoConvertToPolyObj(bool bBezier, bool bAddText) const override;
 
-    virtual void SetPage( SdrPage* pNewPage ) override;
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
 
     virtual SdrObjGeoData *NewGeoData() const override;
     virtual void SaveGeoData(SdrObjGeoData &rGeo) const override;
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 0972849dd74a..828206e246ac 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -342,8 +342,20 @@ public:
     // A SdrObject always needs a SdrModel for lifetime (Pool, ...)
     SdrObject(SdrModel& rSdrModel);
 
-    // SdrModel access on SdrObject level
-    SdrModel& getSdrModelFromSdrObject() const { return mrSdrModelFromSdrObject; }
+    // SdrModel/SdrPage access on SdrObject level
+    virtual SdrPage* getSdrPageFromSdrObject() const;
+    SdrModel& getSdrModelFromSdrObject() const;
+    SdrObjList* getParentOfSdrObject() const;
+    virtual SdrObjList* getChildrenOfSdrObject() const;
+
+private:
+    // only allow SetParentAtSdrObjectFromSdrObjList to call setParentOfSdrObject
+    friend void SetParentAtSdrObjectFromSdrObjList(SdrObject& rSdrObject, SdrObjList* pNew);
+    SVX_DLLPRIVATE void setParentOfSdrObject(SdrObjList* pNew);
+
+public:
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage);
 
     void AddObjectUser(sdr::ObjectUser& rNewUser);
     void RemoveObjectUser(sdr::ObjectUser& rOldUser);
@@ -372,7 +384,7 @@ public:
     ///
     /// This is needed for instance for NbcMove, because usually one moves SnapRect and aOutRect
     /// at the same time to avoid recomputation.
-    virtual void SetRectsDirty(bool bNotMyself = false);
+    virtual void SetRectsDirty(bool bNotMyself = false, bool bRecursive = true);
 
     // frees the SdrObject pointed to by the argument
     // In case the object has an SvxShape, which has the ownership of the object, it
@@ -382,11 +394,6 @@ public:
     // this method is only for access from Property objects
     virtual void SetBoundRectDirty();
 
-    virtual void setParentOfSdrObject(SdrObjList* pNewObjList);
-    SdrObjList* getParentOfSdrObject() const { return mpParentOfSdrObject;}
-
-    virtual void SetPage(SdrPage* pNewPage);
-    SdrPage* GetPage() const { return pPage;}
     SfxItemPool & GetObjectItemPool() const;
 
     void AddListener(SfxListener& rListener);
@@ -906,9 +913,8 @@ public:
     const css::uno::WeakReference< css::uno::XInterface >& getWeakUnoShape() const { return maWeakUnoShape; }
 
 protected:
-    tools::Rectangle                   aOutRect;     // surrounding rectangle for Paint (incl. LineWdt, ...)
+    tools::Rectangle            aOutRect;     // surrounding rectangle for Paint (incl. LineWdt, ...)
     Point                       aAnchor;      // anchor position (Writer)
-    SdrPage*                    pPage;
     SdrObjUserCall*             pUserCall;
     std::unique_ptr<SdrObjPlusData>
                                 pPlusData;    // Broadcaster, UserData, connectors, ... (this is the Bitsack)
@@ -1071,7 +1077,6 @@ public:
         SdrModel& rSdrModel,
         SdrInventor nInventor,
         sal_uInt16 nObjIdentifier,
-        SdrPage* pPage = nullptr,
         const tools::Rectangle* pSnapRect = nullptr);
 
     static void InsertMakeObjectHdl(Link<SdrObjCreatorParams, SdrObject*> const & rLink);
diff --git a/include/svx/svdoedge.hxx b/include/svx/svdoedge.hxx
index e142a4a809e5..366963395a32 100644
--- a/include/svx/svdoedge.hxx
+++ b/include/svx/svdoedge.hxx
@@ -192,6 +192,9 @@ protected:
 public:
     SdrEdgeObj(SdrModel& rSdrModel);
 
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
+
     SdrObjConnection& GetConnection(bool bTail1) { return *(bTail1 ? &aCon1 : &aCon2); }
     virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
     virtual sal_uInt16 GetObjIdentifier() const override;
diff --git a/include/svx/svdograf.hxx b/include/svx/svdograf.hxx
index e07864d3423b..1718b967a4c3 100644
--- a/include/svx/svdograf.hxx
+++ b/include/svx/svdograf.hxx
@@ -197,7 +197,8 @@ public:
 
     bool                    HasGDIMetaFile() const;
 
-    virtual void            SetPage(SdrPage* pNewPage) override;
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
 
     bool isEmbeddedVectorGraphicData() const;
     GDIMetaFile getMetafileFromEmbeddedVectorGraphicData() const;
diff --git a/include/svx/svdogrp.hxx b/include/svx/svdogrp.hxx
index 2901ee82f7d5..53f4107b8248 100644
--- a/include/svx/svdogrp.hxx
+++ b/include/svx/svdogrp.hxx
@@ -29,13 +29,12 @@
 class SfxItemSet;
 
 //   SdrObjGroup
-class SVX_DLLPUBLIC SdrObjGroup final : public SdrObject
+class SVX_DLLPUBLIC SdrObjGroup final : public SdrObject, public SdrObjList
 {
 private:
     virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
     virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() override;
 
-    SdrObjList                  maSdrObjList;   // sub list (children)
     Point                       aRefPoint;      // Reference point inside the object group
 
 private:
@@ -45,13 +44,23 @@ private:
 public:
     SdrObjGroup(SdrModel& rSdrModel);
 
+    // derived from SdrObjList
+    virtual SdrPage* getSdrPageFromSdrObjList() const override;
+    virtual SdrObject* getSdrObjectFromSdrObjList() const override;
+    virtual SdrModel& getSdrModelFromSdrObjList() const override;
+
+    // derived from SdrObject
+    virtual SdrObjList* getChildrenOfSdrObject() const override;
+
     virtual void SetBoundRectDirty() override;
     virtual sal_uInt16 GetObjIdentifier() const override;
     virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
     virtual SdrLayerID GetLayer() const override;
     virtual void NbcSetLayer(SdrLayerID nLayer) override;
-    virtual void setParentOfSdrObject(SdrObjList* pNewObjList) override;
-    virtual void SetPage(SdrPage* pNewPage) override;
+
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
+
     virtual SdrObjList* GetSubList() const override;
 
     virtual const tools::Rectangle& GetCurrentBoundRect() const override;
diff --git a/include/svx/svdoole2.hxx b/include/svx/svdoole2.hxx
index 7dc190b33b67..c7a108c963df 100644
--- a/include/svx/svdoole2.hxx
+++ b/include/svx/svdoole2.hxx
@@ -120,7 +120,8 @@ public:
 
     void AbandonObject();
 
-    virtual void SetPage(SdrPage* pNewPage) override;
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
 
     /** Change the IsClosedObj attribute
 
diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx
index 912780c12320..7be26b52d40f 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -435,7 +435,9 @@ public:
     SdrTextAniKind GetTextAniKind() const;
     SdrTextAniDirection GetTextAniDirection() const;
 
-    virtual void SetPage(SdrPage* pNewPage) override;
+    // react on model/page change
+    virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
+
     virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
     virtual sal_uInt16 GetObjIdentifier() const override;
 
diff --git a/include/svx/svdpage.hxx b/include/svx/svdpage.hxx
index 5d978c09cba1..e095f953d1e8 100644
--- a/include/svx/svdpage.hxx
+++ b/include/svx/svdpage.hxx
@@ -72,18 +72,14 @@ private:
 protected:
 friend class SdrObjListIter;
 friend class SdrEditView;
-    SdrObjList* pUpList;   /// parent list
-    SdrPage*    mpPage;     /// Page containing the list, may be "this".
-    SdrObject*  pOwnerObj; /// OwnerObject, if it's list of a Group object.
-    tools::Rectangle   maOutRect;
-    tools::Rectangle   aSnapRect;
-    SdrObjListKind eListKind;
-    bool        bObjOrdNumsDirty;
-    bool        bRectsDirty;
+
+    tools::Rectangle    maSdrObjListOutRect;
+    tools::Rectangle    maSdrObjListSnapRect;
+    bool                mbObjOrdNumsDirty;
+    bool                mbRectsDirty;
 
 protected:
     void RecalcRects();
-    void copyDataFromSdrObjList(const SdrObjList& rSrcList);
 
 private:
     /// simple ActionChildInserted forwarder to have it on a central place
@@ -95,43 +91,46 @@ private:
     // (e.g. SdrPage)
     void impClearSdrObjList(bool bBroadcast);
 
-public:
-    SdrObjList(SdrPage* pNewPage = nullptr);
+protected:
+    // protected constructor to make clear that this class should only
+    // be used as base for derivations, not naked. See getSdrModelFromSdrObjList
+    // which is pure virtual to force this, too
+    SdrObjList();
     virtual ~SdrObjList();
 
+public:
+    // SdrModel/SdrPage access on SdrObjList level
+    virtual SdrPage* getSdrPageFromSdrObjList() const;
+    virtual SdrObject* getSdrObjectFromSdrObjList() const;
+    virtual SdrModel& getSdrModelFromSdrObjList() const = 0;
+
     void CopyObjects(const SdrObjList& rSrcList);
 
     // tdf#116879 clean up everything (without Undo), plus broadcasting
     // changes. Split to this call and a private one (impClearSdrObjList)
     // that allows cleanup without broadcasting in the destructor
-    void ClearSdrObjList();
-
-    SdrObjListKind GetListKind() const                  { return eListKind; }
-    void           SetListKind(SdrObjListKind eNewKind) { eListKind=eNewKind; }
-    SdrObjList*    GetUpList() const                    { return pUpList; }
-    void           SetUpList(SdrObjList* pNewUpList)    { pUpList=pNewUpList; }
-    SdrObject*     GetOwnerObj() const                  { return pOwnerObj; }
-    void           SetOwnerObj(SdrObject* pNewOwner)    { pOwnerObj=pNewOwner; }
-    SdrPage*       GetPage() const;
-    void           SetPage(SdrPage* pNewPage);
+    void    ClearSdrObjList();
 
     /// recalculate order numbers / ZIndex
     void           RecalcObjOrdNums();
-    bool           IsObjOrdNumsDirty() const        { return bObjOrdNumsDirty; }
+    bool           IsObjOrdNumsDirty() const        { return mbObjOrdNumsDirty; }
     virtual void   NbcInsertObject(SdrObject* pObj, size_t nPos=SAL_MAX_SIZE);
     virtual void   InsertObject(SdrObject* pObj, size_t nPos=SAL_MAX_SIZE);
+
     /// remove from list without delete
     virtual SdrObject* NbcRemoveObject(size_t nObjNum);
     virtual SdrObject* RemoveObject(size_t nObjNum);
+
     /// Replace existing object by different one.
     /// Same as Remove(old)+Insert(new) but faster because the order numbers
     /// do not have to be set dirty.
     virtual SdrObject* NbcReplaceObject(SdrObject* pNewObj, size_t nObjNum);
     virtual SdrObject* ReplaceObject(SdrObject* pNewObj, size_t nObjNum);
+
     /// Modify ZOrder of an SdrObject
     virtual SdrObject* SetObjectOrdNum(size_t nOldObjNum, size_t nNewObjNum);
 
-    void SetRectsDirty();
+    void SetSdrObjListRectsDirty();
 
     const tools::Rectangle& GetAllObjSnapRect() const;
     const tools::Rectangle& GetAllObjBoundRect() const;
@@ -160,6 +159,7 @@ public:
         removes the group object afterwards.
      */
     void FlattenGroups();
+
     /** Ungroup the object at the given index
 
         This method ungroups the content of the group object at the
@@ -282,9 +282,6 @@ private:
 // Used for all methods which return a page number
 #define SDRPAGE_NOTFOUND 0xFFFF
 
-
-// class SdrPageGridFrame
-
 /// for the snap-to-grid in Writer
 class SdrPageGridFrame
 {
@@ -314,9 +311,7 @@ public:
     const SdrPageGridFrame& operator[](sal_uInt16 nPos) const              { return *GetObject(nPos); }
 };
 
-
 // class SdrPageProperties
-
 class SVX_DLLPUBLIC SdrPageProperties : public SfxListener, public svl::StyleSheetUser
 {
 private:
@@ -399,6 +394,7 @@ public:
 
     // SdrModel access on SdrPage level
     SdrModel& getSdrModelFromSdrPage() const { return mrSdrModelFromSdrPage; }
+    virtual SdrModel& getSdrModelFromSdrObjList() const override;
 
 protected:
     sdr::contact::ViewContact* CreateObjectSpecificViewContact();
@@ -444,8 +440,7 @@ protected:
     // #i93597#
     bool                mbPageBorderOnlyLeftRight : 1;
 
-    void                SetUnoPage(css::uno::Reference<
-                                   css::drawing::XDrawPage> const&);
+    void SetUnoPage(css::uno::Reference<css::drawing::XDrawPage> const&);
     virtual css::uno::Reference< css::uno::XInterface > createUnoPage();
 
     // Copying of pages is split into two parts: construction and copying of page objects,
@@ -465,6 +460,9 @@ public:
     bool             IsInserted() const         { return mbInserted; }
     void             SetChanged();
 
+    // derived from SdrObjList, returns this
+    virtual SdrPage* getSdrPageFromSdrObjList() const override;
+
     // #i68775# React on PageNum changes (from Model in most cases)
     void SetPageNum(sal_uInt16 nNew);
     sal_uInt16 GetPageNum() const;
diff --git a/include/svx/svdtypes.hxx b/include/svx/svdtypes.hxx
index e3edbcc41511..38e41fa45a92 100644
--- a/include/svx/svdtypes.hxx
+++ b/include/svx/svdtypes.hxx
@@ -64,20 +64,6 @@ typedef o3tl::strong_int<sal_uInt8,SdrLayerIDTag> SdrLayerID;
 constexpr SdrLayerID SDRLAYER_NOTFOUND(0xff);
 
 /*
- * Page + ObjList
- */
-enum class SdrObjListKind {
-    Unknown    = 0x00,
-    // pure object lists:
-    GroupObj   = 0x01,
-    // Here is space for 12 more types of lists
-    // Pages:
-    DrawPage   = 0x10,
-    MasterPage = 0x11
-    // Here is space for 8 more types of pages
-};   // reserved for Surrogate
-
-/*
  * Repeat
  */
 enum class SdrRepeatFunc {
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
index 85a50a242c58..39787c83a752 100644
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ b/reportdesign/source/core/sdr/RptObject.cxx
@@ -506,7 +506,7 @@ SdrInventor OCustomShape::GetObjInventor() const
 
 SdrPage* OCustomShape::GetImplPage() const
 {
-    return GetPage();
+    return getSdrPageFromSdrObject();
 }
 
 void OCustomShape::NbcMove( const Size& rSize )
@@ -664,7 +664,7 @@ SdrInventor OUnoObject::GetObjInventor() const
 
 SdrPage* OUnoObject::GetImplPage() const
 {
-    return GetPage();
+    return getSdrPageFromSdrObject();
 }
 
 void OUnoObject::NbcMove( const Size& rSize )
@@ -944,7 +944,7 @@ SdrInventor OOle2Obj::GetObjInventor() const
 
 SdrPage* OOle2Obj::GetImplPage() const
 {
-    return GetPage();
+    return getSdrPageFromSdrObject();
 }
 
 void OOle2Obj::NbcMove( const Size& rSize )
diff --git a/reportdesign/source/ui/misc/UITools.cxx b/reportdesign/source/ui/misc/UITools.cxx
index ea96a409cfcb..42c172c2b818 100644
--- a/reportdesign/source/ui/misc/UITools.cxx
+++ b/reportdesign/source/ui/misc/UITools.cxx
@@ -842,7 +842,7 @@ void notifySystemWindow(vcl::Window const * _pWindow, vcl::Window* _pToRegister,
 SdrObject* isOver(const tools::Rectangle& _rRect, SdrPage const & _rPage, SdrView const & _rView, bool _bAllObjects, SdrObject const * _pIgnore, sal_Int16 _nIgnoreType)
 {
     SdrObject* pOverlappedObj = nullptr;
-    SdrObjListIter aIter(_rPage,SdrIterMode::DeepNoGroups);
+    SdrObjListIter aIter(&_rPage,SdrIterMode::DeepNoGroups);
     SdrObject* pObjIter = nullptr;
 
     while( !pOverlappedObj && (pObjIter = aIter.Next()) != nullptr )
@@ -883,7 +883,7 @@ bool checkArrayForOccurrence(SdrObject const * _pObjToCheck, SdrUnoObj* _pIgnore
 SdrObject* isOver(const tools::Rectangle& _rRect,SdrPage const & _rPage,SdrView const & _rView,bool _bAllObjects, SdrUnoObj * _pIgnoreList[], int _nIgnoreListLength)
 {
     SdrObject* pOverlappedObj = nullptr;
-    SdrObjListIter aIter(_rPage,SdrIterMode::DeepNoGroups);
+    SdrObjListIter aIter(&_rPage,SdrIterMode::DeepNoGroups);
     SdrObject* pObjIter = nullptr;
 
     while( !pOverlappedObj && (pObjIter = aIter.Next()) != nullptr )
diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx
index 32898fcc74a6..29e8661a4ea4 100644
--- a/reportdesign/source/ui/report/ReportController.cxx
+++ b/reportdesign/source/ui/report/ReportController.cxx
@@ -3110,8 +3110,7 @@ void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,co
         pNewControl = SdrObjFactory::MakeNewObject(
             *m_aReportModel,
             SdrInventor::ReportDesign,
-            _nObjectId,
-            pSectionWindow->getReportSection().getPage());
+            _nObjectId);
         xShapeProp.set(pNewControl->getUnoShape(),uno::UNO_QUERY);
         OUString sCustomShapeType = getDesignView()->GetInsertObjString();
         if ( sCustomShapeType.isEmpty() )
@@ -3124,8 +3123,7 @@ void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,co
         pNewControl = SdrObjFactory::MakeNewObject(
             *m_aReportModel,
             SdrInventor::ReportDesign,
-            _nObjectId,
-            pSectionWindow->getReportSection().getPage());
+            _nObjectId);
 
         pNewControl->SetLogicRect(tools::Rectangle(3000,500,8000,5500)); // switch height and width
         xShapeProp.set(pNewControl->getUnoShape(),uno::UNO_QUERY_THROW);
diff --git a/reportdesign/source/ui/report/ReportSection.cxx b/reportdesign/source/ui/report/ReportSection.cxx
index 62c9275ef15d..07f6d4bf72c2 100644
--- a/reportdesign/source/ui/report/ReportSection.cxx
+++ b/reportdesign/source/ui/report/ReportSection.cxx
@@ -266,10 +266,7 @@ void OReportSection::Paste(const uno::Sequence< beans::NamedValue >& _aAllreadyC
                         {
                             // Clone to target SdrModel
                             SdrObject* pNewObj(pObject->CloneSdrObject(*m_pModel.get()));
-
-                            pNewObj->SetPage( m_pPage );
                             m_pPage->InsertObject(pNewObj, SAL_MAX_SIZE);
-
                             tools::Rectangle aRet(VCLPoint((*pCopiesIter)->getPosition()),VCLSize((*pCopiesIter)->getSize()));
                             aRet.setHeight(aRet.getHeight() + 1);
                             aRet.setWidth(aRet.getWidth() + 1);
@@ -418,7 +415,7 @@ void OReportSection::SelectAll(const sal_uInt16 _nObjectType)
         else
         {
             m_pView->UnmarkAll();
-            SdrObjListIter aIter(*m_pPage,SdrIterMode::DeepNoGroups);
+            SdrObjListIter aIter(m_pPage,SdrIterMode::DeepNoGroups);
             SdrObject* pObjIter = nullptr;
             while( (pObjIter = aIter.Next()) != nullptr )
             {
diff --git a/reportdesign/source/ui/report/ViewsWindow.cxx b/reportdesign/source/ui/report/ViewsWindow.cxx
index 72f74f2eff50..5860c96a9868 100644
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@ -76,7 +76,7 @@ bool lcl_getNewRectSize(const tools::Rectangle& _aObjRect,long& _nXMov, long& _n
             }
             if (dynamic_cast<OUnoObject const *>(_pObj) != nullptr || dynamic_cast<OOle2Obj const *>(_pObj) != nullptr)
             {
-                pOverlappedObj = isOver(aNewRect,*_pObj->GetPage(),*_pView,true,_pObj);
+                pOverlappedObj = isOver(aNewRect,*_pObj->getSdrPageFromSdrObject(),*_pView,true,_pObj);
                 if ( pOverlappedObj && _pObj != pOverlappedObj )
                 {
                     tools::Rectangle aOverlappingRect = pOverlappedObj->GetSnapRect();
diff --git a/reportdesign/source/ui/report/dlgedfunc.cxx b/reportdesign/source/ui/report/dlgedfunc.cxx
index 0c465d1bb106..2d07356bb356 100644
--- a/reportdesign/source/ui/report/dlgedfunc.cxx
+++ b/reportdesign/source/ui/report/dlgedfunc.cxx
@@ -420,7 +420,7 @@ void DlgEdFunc::deactivateOle(bool _bSelect)
     for(sal_uLong i = 0 ; i< nCount;++i)
     {
         SdrOle2Obj* pObj = rObjCache[i];
-        if ( m_pParent->getPage() == pObj->GetPage() )
+        if ( m_pParent->getPage() == pObj->getSdrPageFromSdrObject() )
         {
             uno::Reference< embed::XEmbeddedObject > xObj = pObj->GetObjRef();
             if ( xObj.is() && xObj->getCurrentState() == embed::EmbedStates::UI_ACTIVE )
@@ -567,7 +567,7 @@ bool DlgEdFunc::isRectangleHit(const MouseEvent& rMEvt)
         const SdrDragStat& rDragStat = m_rView.GetDragStat();
         if (rDragStat.GetDragMethod() != nullptr)
         {
-            SdrObjListIter aIter(*m_pParent->getPage(),SdrIterMode::DeepNoGroups);
+            SdrObjListIter aIter(m_pParent->getPage(),SdrIterMode::DeepNoGroups);
             SdrObject* pObjIter = nullptr;
             // loop through all marked objects and check if there new rect overlapps an old one.
             while( (pObjIter = aIter.Next()) != nullptr && !bIsSetPoint)
diff --git a/reportdesign/source/ui/report/propbrw.cxx b/reportdesign/source/ui/report/propbrw.cxx
index e8f17e035c2e..08cc3997339a 100644
--- a/reportdesign/source/ui/report/propbrw.cxx
+++ b/reportdesign/source/ui/report/propbrw.cxx
@@ -292,7 +292,7 @@ uno::Sequence< Reference<uno::XInterface> > PropBrw::CreateCompPropSet(const Sdr
         ::std::unique_ptr<SdrObjListIter> pGroupIterator;
         if (pCurrent->IsGroupObject())
         {
-            pGroupIterator.reset(new SdrObjListIter(*pCurrent->GetSubList()));
+            pGroupIterator.reset(new SdrObjListIter(pCurrent->GetSubList()));
             pCurrent = pGroupIterator->IsMore() ? pGroupIterator->Next() : nullptr;
         }
 
diff --git a/sc/CppunitTest_sc_subsequent_export_test.mk b/sc/CppunitTest_sc_subsequent_export_test.mk
index 5afd437add9e..aab29559ff4b 100644
--- a/sc/CppunitTest_sc_subsequent_export_test.mk
+++ b/sc/CppunitTest_sc_subsequent_export_test.mk
@@ -102,6 +102,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_subsequent_export_test,\
     vcl/vcl.common \
     xmloff/util/xo \
     xmlsecurity/util/xmlsecurity \
+    emfio/emfio \
 ))
 
 $(eval $(call gb_CppunitTest_use_components,sc_subsequent_export_test,\
diff --git a/sc/source/core/data/documen5.cxx b/sc/source/core/data/documen5.cxx
index bb46fe857fef..bf92c9d2d3e7 100644
--- a/sc/source/core/data/documen5.cxx
+++ b/sc/source/core/data/documen5.cxx
@@ -110,7 +110,7 @@ bool ScDocument::HasChartAtPoint( SCTAB nTab, const Point& rPos, OUString& rName
         SdrPage* pPage = mpDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));
         OSL_ENSURE(pPage,"Page ?");
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -154,7 +154,7 @@ uno::Reference< chart2::XChartDocument > ScDocument::GetChartByName( const OUStr
             SdrPage* pPage = mpDrawLayer->GetPage(nTab);
             OSL_ENSURE(pPage,"Page ?");
 
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject)
             {
@@ -219,7 +219,7 @@ void ScDocument::GetOldChartParameters( const OUString& rName,
         SdrPage* pPage = mpDrawLayer->GetPage(nTab);
         OSL_ENSURE(pPage,"Page ?");
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -266,7 +266,7 @@ void ScDocument::UpdateChartArea( const OUString& rChartName,
         SdrPage* pPage = mpDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));
         OSL_ENSURE(pPage,"Page ?");
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -499,7 +499,7 @@ void ScDocument::SetChartRangeList( const OUString& rChartName,
         SdrPage* pPage = mpDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));
         OSL_ENSURE(pPage,"Page ?");
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -554,7 +554,7 @@ uno::Reference< embed::XEmbeddedObject >
         SdrPage* pPage = mpDrawLayer->GetPage(nTab);
         OSL_ENSURE(pPage,"Page ?");
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -593,7 +593,7 @@ void ScDocument::UpdateChartListenerCollection()
         if (!pPage)
             continue;
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         ScChartListenerCollection::StringSetType& rNonOleObjects =
             pChartListenerCollection->getNonOleObjectNames();
 
diff --git a/sc/source/core/data/documen9.cxx b/sc/source/core/data/documen9.cxx
index d7c0401a9366..5433142df41a 100644
--- a/sc/source/core/data/documen9.cxx
+++ b/sc/source/core/data/documen9.cxx
@@ -80,13 +80,12 @@ void ScDocument::TransferDrawPage(ScDocument* pSrcDoc, SCTAB nSrcPos, SCTAB nDes
 
         if (pOldPage && pNewPage)
         {
-            SdrObjListIter aIter( *pOldPage, SdrIterMode::Flat );
+            SdrObjListIter aIter( pOldPage, SdrIterMode::Flat );
             SdrObject* pOldObject = aIter.Next();
             while (pOldObject)
             {
                 // Clone to target SdrModel
                 SdrObject* pNewObject(pOldObject->CloneSdrObject(*mpDrawLayer));
-                pNewObject->SetPage(pNewPage);
                 pNewObject->NbcMove(Size(0,0));
                 pNewPage->InsertObject( pNewObject );
 
@@ -307,7 +306,7 @@ bool ScDocument::HasOLEObjectsInArea( const ScRange& rRange, const ScMarkData* p
             OSL_ENSURE(pPage,"Page ?");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+                SdrObjListIter aIter( pPage, SdrIterMode::Flat );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
@@ -333,7 +332,7 @@ void ScDocument::StartAnimations( SCTAB nTab )
     if (!pPage)
         return;
 
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject)
     {
@@ -361,7 +360,7 @@ bool ScDocument::HasBackgroundDraw( SCTAB nTab, const tools::Rectangle& rMMRect
 
     bool bFound = false;
 
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject && !bFound)
     {
@@ -386,7 +385,7 @@ bool ScDocument::HasAnyDraw( SCTAB nTab, const tools::Rectangle& rMMRect ) const
 
     bool bFound = false;
 
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject && !bFound)
     {
@@ -414,7 +413,7 @@ SdrObject* ScDocument::GetObjectAtPoint( SCTAB nTab, const Point& rPos )
         OSL_ENSURE(pPage,"Page ?");
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+            SdrObjListIter aIter( pPage, SdrIterMode::Flat );
             SdrObject* pObject = aIter.Next();
             while (pObject)
             {
@@ -538,7 +537,7 @@ bool ScDocument::HasDetectiveObjects(SCTAB nTab) const
         OSL_ENSURE(pPage,"Page ?");
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject && !bFound)
             {
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index ad3c6252965c..7d64e2a8068e 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -993,7 +993,7 @@ void ScDocument::SetLayoutRTL( SCTAB nTab, bool bRTL )
             OSL_ENSURE(pPage,"Page ?");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index d8c4069c135c..f6cf3f90a0ff 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -156,7 +156,7 @@ ScUndoAnchorData::~ScUndoAnchorData()
 void ScUndoAnchorData::Undo()
 {
     // Trigger Object Change
-    if (pObj->IsInserted() && pObj->GetPage())
+    if (pObj->IsInserted() && pObj->getSdrPageFromSdrObject())
     {
         SdrHint aHint(SdrHintKind::ObjectChange, *pObj);
         pObj->getSdrModelFromSdrObject().Broadcast(aHint);
@@ -176,7 +176,7 @@ void ScUndoAnchorData::Redo()
         ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *mpDoc, mnTab, mbWasResizeWithCell);
 
     // Trigger Object Change
-    if (pObj->IsInserted() && pObj->GetPage())
+    if (pObj->IsInserted() && pObj->getSdrPageFromSdrObject())
     {
         SdrHint aHint(SdrHintKind::ObjectChange, *pObj);
         pObj->getSdrModelFromSdrObject().Broadcast(aHint);
@@ -449,7 +449,7 @@ void ScDrawLayer::ScCopyPage( sal_uInt16 nOldPos, sal_uInt16 nNewPos )
         SCTAB nOldTab = static_cast<SCTAB>(nOldPos);
         SCTAB nNewTab = static_cast<SCTAB>(nNewPos);
 
-        SdrObjListIter aIter( *pOldPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pOldPage, SdrIterMode::Flat );
         SdrObject* pOldObject = aIter.Next();
         while (pOldObject)
         {
@@ -467,7 +467,6 @@ void ScDrawLayer::ScCopyPage( sal_uInt16 nOldPos, sal_uInt16 nNewPos )
 
             // Clone to target SdrModel
             SdrObject* pNewObject(pOldObject->CloneSdrObject(*this));
-            pNewObject->SetPage(pNewPage);
             pNewObject->NbcMove(Size(0,0));
             pNewPage->InsertObject( pNewObject );
             ScDrawObjData* pNewData = GetObjData(pNewObject);
@@ -504,7 +503,7 @@ void ScDrawLayer::ResetTab( SCTAB nStart, SCTAB nEnd )
         if (!pPage)
             continue;
 
-        SdrObjListIter aIter(*pPage, SdrIterMode::Flat);
+        SdrObjListIter aIter(pPage, SdrIterMode::Flat);
         for (SdrObject* pObj = aIter.Next(); pObj; pObj = aIter.Next())
         {
             ScDrawObjData* pData = GetObjData(pObj);
@@ -1081,7 +1080,7 @@ bool ScDrawLayer::GetPrintArea( ScRange& rRange, bool bSetHor, bool bSetVer ) co
     OSL_ENSURE(pPage,"Page not found");
     if (pPage)
     {
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -1302,7 +1301,7 @@ bool ScDrawLayer::HasObjectsInRows( SCTAB nTab, SCROW nStartRow, SCROW nEndRow )
     bool bFound = false;
 
     tools::Rectangle aObjRect;
-    SdrObjListIter aIter( *pPage );
+    SdrObjListIter aIter( pPage );
     SdrObject* pObject = aIter.Next();
     while ( pObject && !bFound )
     {
@@ -1338,7 +1337,7 @@ void ScDrawLayer::DeleteObjectsInArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1,
 
         std::unique_ptr<SdrObject*[]> ppObj(new SdrObject*[nObjCount]);
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -1395,7 +1394,7 @@ void ScDrawLayer::DeleteObjectsInSelection( const ScMarkData& rMark )
 
                 std::unique_ptr<SdrObject*[]> ppObj(new SdrObject*[nObjCount]);
 
-                SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+                SdrObjListIter aIter( pPage, SdrIterMode::Flat );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
@@ -1442,7 +1441,7 @@ void ScDrawLayer::CopyToClip( ScDocument* pClipDoc, SCTAB nTab, const tools::Rec
         ScDrawLayer* pDestModel = nullptr;
         SdrPage* pDestPage = nullptr;
 
-        SdrObjListIter aIter( *pSrcPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pSrcPage, SdrIterMode::Flat );
         SdrObject* pOldObject = aIter.Next();
         while (pOldObject)
         {
@@ -1479,7 +1478,6 @@ void ScDrawLayer::CopyToClip( ScDocument* pClipDoc, SCTAB nTab, const tools::Rec
                 {
                     // Clone to target SdrModel
                     SdrObject* pNewObject(pOldObject->CloneSdrObject(*pDestModel));
-                    pNewObject->SetPage(pDestPage);
 
                     uno::Reference< chart2::XChartDocument > xOldChart( ScChartHelper::GetChartFromSdrObject( pOldObject ) );
                     if(!xOldChart.is())//#i110034# do not move charts as they lose all their data references otherwise
@@ -1578,7 +1576,7 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
     if ( !pSrcPage || !pDestPage )
         return;
 
-    SdrObjListIter aIter( *pSrcPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pSrcPage, SdrIterMode::Flat );
     SdrObject* pOldObject = aIter.Next();
 
     ScDocument* pClipDoc = pClipModel->GetDocument();
@@ -1654,7 +1652,6 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
         {
             // Clone to target SdrModel
             SdrObject* pNewObject(pOldObject->CloneSdrObject(*this));
-            pNewObject->SetPage(pDestPage);
 
             if ( bMirrorObj )
                 MirrorRTL( pNewObject );        // first mirror, then move
@@ -1861,7 +1858,7 @@ SdrObject* ScDrawLayer::GetNamedObject( const OUString& rName, sal_uInt16 nId, S
         OSL_ENSURE(pPage,"Page ?");
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject)
             {
@@ -1913,7 +1910,7 @@ void ScDrawLayer::EnsureGraphicNames()
         OSL_ENSURE(pPage,"Page ?");
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
             SdrObject* pObject = aIter.Next();
 
             /* The index passed to GetNewGraphicName() will be set to
@@ -2095,7 +2092,7 @@ ScDrawLayer::GetObjectsAnchoredToRows(SCTAB nTab, SCROW nStartRow, SCROW nEndRow
         return std::vector<SdrObject*>();
 
     std::vector<SdrObject*> aObjects;
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     ScRange aRange( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab);
     while (pObject)
@@ -2119,7 +2116,7 @@ ScDrawLayer::GetObjectsAnchoredToRange(SCTAB nTab, SCCOL nCol, SCROW nStartRow,
         return std::map<SCROW, std::vector<SdrObject*>>();
 
     std::map<SCROW, std::vector<SdrObject*>> aRowObjects;
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     ScRange aRange( nCol, nStartRow, nTab, nCol, nEndRow, nTab);
     while (pObject)
@@ -2144,7 +2141,7 @@ bool ScDrawLayer::HasObjectsAnchoredInRange(const ScRange& rRange)
     if (!pPage || pPage->GetObjCount() < 1)
         return false;
 
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject)
     {
diff --git a/sc/source/core/data/postit.cxx b/sc/source/core/data/postit.cxx
index 7b51b97431bd..c943d0350d8b 100644
--- a/sc/source/core/data/postit.cxx
+++ b/sc/source/core/data/postit.cxx
@@ -434,8 +434,8 @@ ScNoteCaptionCreator::ScNoteCaptionCreator( ScDocument& rDoc, const ScAddress& r
 {
     SdrPage* pDrawPage = GetDrawPage();
     OSL_ENSURE( pDrawPage, "ScNoteCaptionCreator::ScNoteCaptionCreator - no drawing page" );
-    OSL_ENSURE( xCaption->GetPage() == pDrawPage, "ScNoteCaptionCreator::ScNoteCaptionCreator - wrong drawing page in caption" );
-    if( pDrawPage && (xCaption->GetPage() == pDrawPage) )
+    OSL_ENSURE( xCaption->getSdrPageFromSdrObject() == pDrawPage, "ScNoteCaptionCreator::ScNoteCaptionCreator - wrong drawing page in caption" );
+    if( pDrawPage && (xCaption->getSdrPageFromSdrObject() == pDrawPage) )
     {
         // store note position in user data of caption object
         ScCaptionUtil::SetCaptionUserData( *xCaption, rPos );
@@ -750,7 +750,7 @@ void ScCaptionPtr::removeFromDrawPage( SdrPage& rDrawPage )
 void ScCaptionPtr::removeFromDrawPageAndFree( bool bIgnoreUndo )
 {
     assert(mpHead && mpCaption);
-    SdrPage* pDrawPage = mpCaption->GetPage();
+    SdrPage* pDrawPage(mpCaption->getSdrPageFromSdrObject());
     SAL_WARN_IF( !pDrawPage, "sc.core", "ScCaptionPtr::removeFromDrawPageAndFree - object without drawing page");
     if (pDrawPage)
     {
diff --git a/sc/source/core/tool/charthelper.cxx b/sc/source/core/tool/charthelper.cxx
index 79140b928142..6e71f375415a 100644
--- a/sc/source/core/tool/charthelper.cxx
+++ b/sc/source/core/tool/charthelper.cxx
@@ -52,7 +52,7 @@ sal_uInt16 lcl_DoUpdateCharts( ScDocument* pDoc )
         SdrPage* pPage = pModel->GetPage(nPageNo);
         OSL_ENSURE(pPage,"Page ?");
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -118,7 +118,7 @@ void ScChartHelper::AdjustRangesOfChartsOnDestinationPage( const ScDocument* pSr
     SdrPage* pDestPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nDestTab));
     if( pDestPage )
     {
-        SdrObjListIter aIter( *pDestPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pDestPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while( pObject )
         {
@@ -158,7 +158,7 @@ void ScChartHelper::UpdateChartsOnDestinationPage( ScDocument* pDestDoc, const S
     SdrPage* pDestPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nDestTab));
     if( pDestPage )
     {
-        SdrObjListIter aIter( *pDestPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pDestPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while( pObject )
         {
@@ -329,7 +329,7 @@ void ScChartHelper::FillProtectedChartRangesVector( ScRangeListVector& rRangesVe
 {
     if ( pDocument && pPage )
     {
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while ( pObject )
         {
@@ -343,7 +343,7 @@ void ScChartHelper::GetChartNames( ::std::vector< OUString >& rChartNames, const
 {
     if ( pPage )
     {
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while ( pObject )
         {
@@ -367,7 +367,7 @@ void ScChartHelper::CreateProtectedChartListenersAndNotify( ScDocument* pDoc, co
     {
         size_t nRangeListCount = rRangesVector.size();
         size_t nRangeList = 0;
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while ( pObject )
         {
diff --git a/sc/source/core/tool/chartlock.cxx b/sc/source/core/tool/chartlock.cxx
index d33a82a09e0b..fe52a1af994e 100644
--- a/sc/source/core/tool/chartlock.cxx
+++ b/sc/source/core/tool/chartlock.cxx
@@ -53,7 +53,7 @@ std::vector< WeakReference< frame::XModel > > lcl_getAllLivingCharts( ScDocument
             SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));
             OSL_ENSURE(pPage,"Page ?");
 
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject)
             {
diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx
index 40cfd3c9a1b3..fd18f444d21d 100644
--- a/sc/source/core/tool/detfunc.cxx
+++ b/sc/source/core/tool/detfunc.cxx
@@ -390,7 +390,7 @@ bool ScDetectiveFunc::HasArrow( const ScAddress& rStart,
     OSL_ENSURE(pPage,"Page ?");
 
     bool bFound = false;
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject && !bFound)
     {
@@ -671,7 +671,7 @@ void ScDetectiveFunc::DeleteArrowsAt( SCCOL nCol, SCROW nRow, bool bDestPnt )
         size_t nDelCount = 0;
         std::unique_ptr<SdrObject*[]> ppObj(new SdrObject*[nObjCount]);
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -744,7 +744,7 @@ void ScDetectiveFunc::DeleteBox( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nR
         size_t nDelCount = 0;
         std::unique_ptr<SdrObject*[]> ppObj(new SdrObject*[nObjCount]);
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -1246,7 +1246,7 @@ bool ScDetectiveFunc::DeleteAll( ScDetectiveDelete eWhat )
     {
         std::unique_ptr<SdrObject*[]> ppObj(new SdrObject*[nObjCount]);
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
@@ -1418,7 +1418,7 @@ void ScDetectiveFunc::UpdateAllComments( ScDocument& rDoc )
         OSL_ENSURE( pPage, "Page ?" );
         if( pPage )
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+            SdrObjListIter aIter( pPage, SdrIterMode::Flat );
             for( SdrObject* pObject = aIter.Next(); pObject; pObject = aIter.Next() )
             {
                 if ( ScDrawObjData* pData = ScDrawLayer::GetNoteCaptionData( pObject, nObjTab ) )
@@ -1459,7 +1459,7 @@ void ScDetectiveFunc::UpdateAllArrowColors()
         OSL_ENSURE( pPage, "Page ?" );
         if( pPage )
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+            SdrObjListIter aIter( pPage, SdrIterMode::Flat );
             for( SdrObject* pObject = aIter.Next(); pObject; pObject = aIter.Next() )
             {
                 if ( pObject->GetLayer() == SC_LAYER_INTERN )
@@ -1536,7 +1536,7 @@ void ScDetectiveFunc::FindFrameForObject( const SdrObject* pObject, ScRange& rRa
     if (!pPage) return;
 
     // test if the object is a direct page member
-    if( pObject && pObject->GetPage() && (pObject->GetPage() == pObject->getParentOfSdrObject()) )
+    if( pObject && pObject->getSdrPageFromSdrObject() && (pObject->getSdrPageFromSdrObject() == pObject->getParentOfSdrObject()->getSdrPageFromSdrObjList()) )
     {
         // Is there a previous object?
         const size_t nOrdNum = pObject->GetOrdNum();
diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx
index b530e8705f7c..9b5fc62503de 100644
--- a/sc/source/filter/excel/xiescher.cxx
+++ b/sc/source/filter/excel/xiescher.cxx
@@ -3200,7 +3200,7 @@ void XclImpSolverContainer::RemoveSdrObjectInfo( SdrObject& rSdrObj )
         if( SdrObjList* pSubList = pGroupObj->GetSubList() )
         {
             // iterate flat over the list because this function already works recursively
-            SdrObjListIter aObjIt( *pSubList, SdrIterMode::Flat );
+            SdrObjListIter aObjIt( pSubList, SdrIterMode::Flat );
             for( SdrObject* pChildObj = aObjIt.Next(); pChildObj; pChildObj = aObjIt.Next() )
                 RemoveSdrObjectInfo( *pChildObj );
         }
diff --git a/sc/source/filter/html/htmlexp2.cxx b/sc/source/filter/html/htmlexp2.cxx
index 45743fb88518..1bda4156adf2 100644
--- a/sc/source/filter/html/htmlexp2.cxx
+++ b/sc/source/filter/html/htmlexp2.cxx
@@ -72,7 +72,7 @@ void ScHTMLExport::FillGraphList( const SdrPage* pPage, SCTAB nTab,
         tools::Rectangle aRect;
         if ( !bAll )
             aRect = pDoc->GetMMRect( nStartCol, nStartRow, nEndCol, nEndRow, nTab );
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         while ( pObject )
         {
diff --git a/sc/source/filter/inc/xcl97rec.hxx b/sc/source/filter/inc/xcl97rec.hxx
index d335f68cfc55..d078128859b5 100644
--- a/sc/source/filter/inc/xcl97rec.hxx
+++ b/sc/source/filter/inc/xcl97rec.hxx
@@ -158,11 +158,13 @@ public:
 class XclObjComment : public XclObj
 {
     ScAddress                   maScPos;
-    std::unique_ptr< SdrCaptionObj, SdrObjectFreeOp >
-                                mpCaption;
+
+    // no need to use std::unique_ptr< SdrCaptionObj, SdrObjectFreeOp >
+    SdrCaptionObj*              mpCaption;
+
     bool                        mbVisible;
-    tools::Rectangle                   maFrom;
-    tools::Rectangle                   maTo;
+    tools::Rectangle            maFrom;
+    tools::Rectangle            maTo;
 
 public:
                                 XclObjComment( XclExpObjectManager& rObjMgr,
diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx
index 28d1379771ea..f71e23599e2a 100644
--- a/sc/source/filter/xcl97/xcl97rec.cxx
+++ b/sc/source/filter/xcl97/xcl97rec.cxx
@@ -497,7 +497,20 @@ void XclObj::SaveTextRecs( XclExpStream& rStrm )
 XclObjComment::XclObjComment( XclExpObjectManager& rObjMgr, const tools::Rectangle& rRect, const EditTextObject& rEditObj, SdrCaptionObj* pCaption, bool bVisible, const ScAddress& rAddress, const tools::Rectangle &rFrom, const tools::Rectangle &rTo ) :
     XclObj( rObjMgr, EXC_OBJTYPE_NOTE, true )
             , maScPos( rAddress )
-            , mpCaption( pCaption->CloneSdrObject(pCaption->getSdrModelFromSdrObject()) )
+
+            // No need to CloneSdrObject(...) here, the SdrCaptionObj will exist
+            // during the whole im/export time. Seems that this was done
+            // initially to make UnitTest CppunitTest_sc_subsequent_export_test
+            // work (better: not crash) which had not added emfio/emfio to
+            // CppunitTest_sc_subsequent_export_test.mk and thus failed.
+            // Probably the Graphic created from the Clone was wrong.
+            // Problem with creating a Clone here is that it gets cloned, but not inserted to a
+            // SdrPage. In deeper export layers this then goes wrong since without being inserted
+            // to a Page, no SvxPage/UnoApiPage can be accessed. This was different in previous
+            // revisions of the code in that a SdrObject could be *not* insterted, but have a
+            // SdrPage*. That again was redundant, wrong and inconsequent.
+            , mpCaption( pCaption )
+
             , mbVisible( bVisible )
             , maFrom ( rFrom )
             , maTo ( rTo )
@@ -675,7 +688,7 @@ void VmlCommentExporter::EndShape( sal_Int32 nShapeElement )
 
 void XclObjComment::SaveXml( XclExpXmlStream& rStrm )
 {
-    VmlCommentExporter aCommentExporter( rStrm.GetCurrentStream(), maScPos, mpCaption.get(), mbVisible, maFrom, maTo );
+    VmlCommentExporter aCommentExporter( rStrm.GetCurrentStream(), maScPos, mpCaption, mbVisible, maFrom, maTo );
     aCommentExporter.AddSdrObject( *mpCaption );
 }
 
diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx
index c09607cef932..640854d0fd33 100644
--- a/sc/source/ui/Accessibility/AccessibleDocument.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx
@@ -409,8 +409,8 @@ void ScChildrenShapes::Notify(SfxBroadcaster&, const SfxHint& rHint)
     if (pSdrHint)
     {
         SdrObject* pObj = const_cast<SdrObject*>(pSdrHint->GetObject());
-        if (pObj && /*(pObj->GetLayer() != SC_LAYER_INTERN) && */(pObj->GetPage() == GetDrawPage()) &&
-            (pObj->GetPage() == pObj->getParentOfSdrObject()) ) //only do something if the object lies direct on the page
+        if (pObj && /*(pObj->GetLayer() != SC_LAYER_INTERN) && */(pObj->getSdrPageFromSdrObject() == GetDrawPage()) &&
+            (pObj->getSdrPageFromSdrObject() == pObj->getParentOfSdrObject()) ) //only do something if the object lies direct on the page
         {
             switch (pSdrHint->GetKind())
             {
diff --git a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
index 4b7d699ce46e..aa45b54dcef5 100644
--- a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
@@ -691,7 +691,7 @@ void ScShapeChildren::Notify(SfxBroadcaster&, const SfxHint& rHint)
     if (pSdrHint)
     {
         SdrObject* pObj = const_cast<SdrObject*>(pSdrHint->GetObject());
-        if (pObj && (pObj->GetPage() == GetDrawPage()))
+        if (pObj && (pObj->getSdrPageFromSdrObject() == GetDrawPage()))
         {
             switch (pSdrHint->GetKind())
             {
diff --git a/sc/source/ui/app/client.cxx b/sc/source/ui/app/client.cxx
index 83b0c4d43ed4..06b13352aeba 100644
--- a/sc/source/ui/app/client.cxx
+++ b/sc/source/ui/app/client.cxx
@@ -60,7 +60,7 @@ SdrOle2Obj* ScClient::GetDrawObj()
     for (sal_uInt16 nPNr=0; nPNr<nPages && !pOle2Obj; nPNr++)
     {
         SdrPage* pPage = pModel->GetPage(nPNr);
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject && !pOle2Obj)
         {
diff --git a/sc/source/ui/app/drwtrans.cxx b/sc/source/ui/app/drwtrans.cxx
index 8d00e3f59f65..5b74ca09ee8d 100644
--- a/sc/source/ui/app/drwtrans.cxx
+++ b/sc/source/ui/app/drwtrans.cxx
@@ -91,7 +91,7 @@ ScDrawTransferObj::ScDrawTransferObj( SdrModel* pClipModel, ScDocShell* pContain
     SdrPage* pPage = m_pModel->GetPage(0);
     if (pPage)
     {
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         if (pObject && !aIter.Next())               // exactly one object?
         {
@@ -262,7 +262,7 @@ static bool lcl_HasOnlyControls( SdrModel* pModel )
         SdrPage* pPage = pModel->GetPage(0);
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
             SdrObject* pObj = aIter.Next();
             if ( pObj )
             {
@@ -413,7 +413,7 @@ bool ScDrawTransferObj::GetData( const css::datatransfer::DataFlavor& rFlavor, c
             SdrPage* pPage = m_pModel->GetPage(0);
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+                SdrObjListIter aIter( pPage, SdrIterMode::Flat );
                 SdrObject* pObject = aIter.Next();
                 if (pObject && pObject->GetObjIdentifier() == OBJ_GRAF)
                 {
@@ -472,8 +472,8 @@ bool ScDrawTransferObj::WriteObject( tools::SvRef<SotStorageStream>& rxOStm, voi
 
                 for(sal_uInt16 a(0); a < m_pModel->GetPageCount(); a++)
                 {
-                    const SdrPage* pPage = m_pModel->GetPage(a);
-                    SdrObjListIter aIter(*pPage, SdrIterMode::DeepNoGroups);
+                    const SdrPage* pPage(m_pModel->GetPage(a));
+                    SdrObjListIter aIter(pPage, SdrIterMode::DeepNoGroups);
 
                     while(aIter.IsMore())
                     {
@@ -671,7 +671,7 @@ SdrOle2Obj* ScDrawTransferObj::GetSingleObject()
     SdrPage* pPage = m_pModel->GetPage(0);
     if (pPage)
     {
-        SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+        SdrObjListIter aIter( pPage, SdrIterMode::Flat );
         SdrObject* pObject = aIter.Next();
         if (pObject && pObject->GetObjIdentifier() == OBJ_OLE2)
         {
@@ -731,7 +731,7 @@ void ScDrawTransferObj::InitDocShell()
         SdrPage* pPage = pDestModel->GetPage(0);
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject)
             {
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index dfe591ae9f92..fa9257c1fe88 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -1369,7 +1369,7 @@ bool ScDBDocFunc::RemovePivotTable(ScDPObject& rDPObj, bool bRecord, bool bApi)
                 {
                     rDoc.GetChartListenerCollection()->removeByName(pChartObject->GetName());
                     pModel->AddUndo(new SdrUndoDelObj(*pChartObject));
-                    pChartObject->GetPage()->RemoveObject(pChartObject->GetOrdNum());
+                    pChartObject->getSdrPageFromSdrObject()->RemoveObject(pChartObject->GetOrdNum());
                 }
             }
         }
diff --git a/sc/source/ui/drawfunc/fupoor.cxx b/sc/source/ui/drawfunc/fupoor.cxx
index aa3f425918fe..b47b3694300a 100644
--- a/sc/source/ui/drawfunc/fupoor.cxx
+++ b/sc/source/ui/drawfunc/fupoor.cxx
@@ -197,7 +197,7 @@ bool FuPoor::IsDetectiveHit( const Point& rLogicPos )
         return false;
 
     bool bFound = false;
-    SdrObjListIter aIter( *pPV->GetObjList(), SdrIterMode::Flat );
+    SdrObjListIter aIter( pPV->GetObjList(), SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject && !bFound)
     {
diff --git a/sc/source/ui/drawfunc/fusel2.cxx b/sc/source/ui/drawfunc/fusel2.cxx
index 2da124c4076e..a80a993786af 100644
--- a/sc/source/ui/drawfunc/fusel2.cxx
+++ b/sc/source/ui/drawfunc/fusel2.cxx
@@ -52,7 +52,7 @@ bool FuSelection::TestDetective( const SdrPageView* pPV, const Point& rPos )
         return false;
 
     bool bFound = false;
-    SdrObjListIter aIter( *pPV->GetObjList(), SdrIterMode::Flat );
+    SdrObjListIter aIter( pPV->GetObjList(), SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject && !bFound)
     {
@@ -131,7 +131,7 @@ bool FuSelection::IsNoteCaptionClicked( const Point& rPos ) const
         bool bProtectDoc =  rDoc.IsTabProtected( nTab ) || (pDocSh && pDocSh->IsReadOnly());
 
         // search the last object (on top) in the object list
-        SdrObjListIter aIter( *pPageView->GetObjList(), SdrIterMode::DeepNoGroups, true );
+        SdrObjListIter aIter( pPageView->GetObjList(), SdrIterMode::DeepNoGroups, true );
         for( SdrObject* pObj = aIter.Next(); pObj; pObj = aIter.Next() )
         {
             if( pObj->GetLogicRect().IsInside( rPos ) )
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index 34df68b39cd9..f5308dfacba3 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -186,7 +186,7 @@ OUString ScContentTree::getAltLongDescText( SvTreeListEntry* pEntry, bool isAltT
                     DBG_ASSERT(pPage,"Page ?");
                     if (pPage)
                     {
-                        SdrObjListIter aIter( *pPage, eIter );
+                        SdrObjListIter aIter( pPage, eIter );
                         SdrObject* pObject = aIter.Next();
                         while (pObject)
                         {
@@ -985,7 +985,7 @@ void ScContentTree::GetDrawNames( ScContentId nType )
             OSL_ENSURE(pPage,"Page ?");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, eIter );
+                SdrObjListIter aIter( pPage, eIter );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
@@ -1171,7 +1171,7 @@ bool ScContentTree::DrawNamesChanged( ScContentId nType )
             OSL_ENSURE(pPage,"Page ?");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, eIter );
+                SdrObjListIter aIter( pPage, eIter );
                 SdrObject* pObject = aIter.Next();
                 while (pObject && bEqual)
                 {
diff --git a/sc/source/ui/uitest/uiobject.cxx b/sc/source/ui/uitest/uiobject.cxx
index 3e98e1535bfc..1026cdc62df2 100644
--- a/sc/source/ui/uitest/uiobject.cxx
+++ b/sc/source/ui/uitest/uiobject.cxx
@@ -234,7 +234,7 @@ std::set<OUString> collect_charts(VclPtr<ScGridWindow> const & xGridWindow)
     if (!pPage)
         return aRet;
 
-    SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+    SdrObjListIter aIter( pPage, SdrIterMode::Flat );
     SdrObject* pObject = aIter.Next();
     while (pObject)
     {
diff --git a/sc/source/ui/undo/undotab.cxx b/sc/source/ui/undo/undotab.cxx
index 8b27f5b317ed..6862d2794cc8 100644
--- a/sc/source/ui/undo/undotab.cxx
+++ b/sc/source/ui/undo/undotab.cxx
@@ -1455,7 +1455,7 @@ SdrObject* ScUndoRenameObject::GetObject()
             SdrPage* pPage = pDrawLayer->GetPage(nTab);
             assert(pPage && "Page ?");
 
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject)
             {
diff --git a/sc/source/ui/unoobj/ChartTools.cxx b/sc/source/ui/unoobj/ChartTools.cxx
index 5243de995024..2d2ef3b37eb7 100644
--- a/sc/source/ui/unoobj/ChartTools.cxx
+++ b/sc/source/ui/unoobj/ChartTools.cxx
@@ -72,7 +72,7 @@ ChartIterator::ChartIterator(ScDocShell* pDocShell, SCTAB nTab, ChartSourceType
     SdrPage* pPage = pDrawLayer->GetPage(sal_uInt16(nTab));
     if (!pPage)
         return;
-    m_pIterator.reset(new SdrObjListIter(*pPage, SdrIterMode::DeepNoGroups));
+    m_pIterator.reset(new SdrObjListIter(pPage, SdrIterMode::DeepNoGroups));
 }
 
 SdrOle2Obj* ChartIterator::next()
diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx
index 1c98dc40c502..c8219756aa93 100644
--- a/sc/source/ui/unoobj/chartuno.cxx
+++ b/sc/source/ui/unoobj/chartuno.cxx
@@ -95,7 +95,7 @@ ScChartObj* ScChartsObj::GetObjectByIndex_Impl(long nIndex) const
             if (pPage)
             {
                 long nPos = 0;
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
@@ -307,7 +307,7 @@ sal_Int32 SAL_CALL ScChartsObj::getCount()
             OSL_ENSURE(pPage, "Page not found");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
@@ -372,7 +372,7 @@ uno::Sequence<OUString> SAL_CALL ScChartsObj::getElementNames()
             OSL_ENSURE(pPage, "Page not found");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 59f699d3a6ff..1fd3c9158d7f 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -1467,7 +1467,7 @@ static bool lcl_ParseTarget( const OUString& rTarget, ScRange& rTargetRange, too
                 OSL_ENSURE(pPage,"Page ?");
                 if (pPage)
                 {
-                    SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+                    SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
                     SdrObject* pObject = aIter.Next();
                     while (pObject && !bRangeValid)
                     {
diff --git a/sc/source/ui/unoobj/shapeuno.cxx b/sc/source/ui/unoobj/shapeuno.cxx
index 2279a2f2b4c0..04ef95a81e9f 100644
--- a/sc/source/ui/unoobj/shapeuno.cxx
+++ b/sc/source/ui/unoobj/shapeuno.cxx
@@ -334,7 +334,7 @@ void SAL_CALL ScShapeObj::setPropertyValue(const OUString& aPropertyName, const
         if (pObj)
         {
             ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-            SdrPage* pPage(pObj->GetPage());
+            SdrPage* pPage(pObj->getSdrPageFromSdrObject());
 
             if ( pPage )
             {
@@ -466,7 +466,7 @@ void SAL_CALL ScShapeObj::setPropertyValue(const OUString& aPropertyName, const
             if (pObj)
             {
                 ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-                SdrPage* pPage(pObj->GetPage());
+                SdrPage* pPage(pObj->getSdrPageFromSdrObject());
 
                 if ( pPage )
                 {
@@ -565,7 +565,7 @@ void SAL_CALL ScShapeObj::setPropertyValue(const OUString& aPropertyName, const
             if (pObj)
             {
                 ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-                SdrPage* pPage(pObj->GetPage());
+                SdrPage* pPage(pObj->getSdrPageFromSdrObject());
 
                 if ( pPage )
                 {
@@ -662,7 +662,7 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const OUString& aPropertyName )
         if (pObj)
         {
             ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-            SdrPage* pPage(pObj->GetPage());
+            SdrPage* pPage(pObj->getSdrPageFromSdrObject());
 
             if ( pPage )
             {
@@ -711,7 +711,7 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const OUString& aPropertyName )
         if (pObj)
         {
             ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-            SdrPage* pPage(pObj->GetPage());
+            SdrPage* pPage(pObj->getSdrPageFromSdrObject());
 
             if ( pPage )
             {
@@ -771,7 +771,7 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const OUString& aPropertyName )
         if (pObj)
         {
             ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-            SdrPage* pPage(pObj->GetPage());
+            SdrPage* pPage(pObj->getSdrPageFromSdrObject());
 
             if ( pPage )
             {
@@ -1005,7 +1005,7 @@ uno::Reference<text::XTextRange> SAL_CALL ScShapeObj::getAnchor()
     if( pObj )
     {
         ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-        SdrPage* pPage(pObj->GetPage());
+        SdrPage* pPage(pObj->getSdrPageFromSdrObject());
         ScDocument* pDoc = rModel.GetDocument();
 
         if ( pPage && pDoc )
@@ -1248,7 +1248,7 @@ uno::Reference< uno::XInterface > SAL_CALL ScShapeObj::getParent()
     if( pObj )
     {
         ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
-        SdrPage* pPage(pObj->GetPage());
+        SdrPage* pPage(pObj->getSdrPageFromSdrObject());
         ScDocument* pDoc = rModel.GetDocument();
 
         if ( pPage && pDoc )
diff --git a/sc/source/ui/unoobj/viewuno.cxx b/sc/source/ui/unoobj/viewuno.cxx
index ec637f1272e8..81c99ca631e4 100644
--- a/sc/source/ui/unoobj/viewuno.cxx
+++ b/sc/source/ui/unoobj/viewuno.cxx
@@ -645,7 +645,7 @@ static void lcl_ShowObject( ScTabViewShell& rViewSh, const ScDrawView& rDrawView
         SdrPage* pPage = pModel->GetPage(i);
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject && !bFound)
             {
@@ -776,7 +776,7 @@ sal_Bool SAL_CALL ScTabViewObj::select( const uno::Any& aSelection )
                 {
                     lcl_ShowObject( *pViewSh, *pDrawView, pObj );
                     SdrPageView* pPV = pDrawView->GetSdrPageView();
-                    if ( pPV && pObj->GetPage() == pPV->GetPage() )
+                    if ( pPV && pObj->getSdrPageFromSdrObject() == pPV->GetPage() )
                     {
                         pDrawView->MarkObj( pObj, pPV );
                         bRet = true;
@@ -816,7 +816,7 @@ sal_Bool SAL_CALL ScTabViewObj::select( const uno::Any& aSelection )
                                         lcl_ShowObject( *pViewSh, *pDrawView, pObj );
                                         pPV = pDrawView->GetSdrPageView();
                                     }
-                                    if ( pPV && pObj->GetPage() == pPV->GetPage() )
+                                    if ( pPV && pObj->getSdrPageFromSdrObject() == pPV->GetPage() )
                                     {
                                         if (pDrawView->IsObjMarkable( pObj, pPV ))
                                             pDrawView->MarkObj( pObj, pPV );
diff --git a/sc/source/ui/view/dbfunc4.cxx b/sc/source/ui/view/dbfunc4.cxx
index be7ef4021289..786299e88853 100644
--- a/sc/source/ui/view/dbfunc4.cxx
+++ b/sc/source/ui/view/dbfunc4.cxx
@@ -41,7 +41,7 @@ sal_uInt16 ScDBFunc::DoUpdateCharts( const ScAddress& rPos, ScDocument* pDoc, bo
         SdrPage* pPage = pModel->GetPage(nPageNo);
         OSL_ENSURE(pPage,"Page ?");
 
-        SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+        SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
         SdrObject* pObject = aIter.Next();
         while (pObject)
         {
diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx
index d688b8a13ca5..9069aede14ad 100644
--- a/sc/source/ui/view/drawview.cxx
+++ b/sc/source/ui/view/drawview.cxx
@@ -655,7 +655,7 @@ SdrObject* ScDrawView::GetObjectByName(const OUString& rName)
             DBG_ASSERT(pPage,"Page ?");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
@@ -689,7 +689,7 @@ void ScDrawView::SelectCurrentViewObject( const OUString& rName )
             DBG_ASSERT(pPage,"Page ?");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject && !pFound)
                 {
@@ -743,7 +743,7 @@ bool ScDrawView::SelectObject( const OUString& rName )
             OSL_ENSURE(pPage,"Page ?");
             if (pPage)
             {
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject && !pFound)
                 {
diff --git a/sc/source/ui/view/tabvwshg.cxx b/sc/source/ui/view/tabvwshg.cxx
index d081c875c4cb..887af7e5a1f2 100644
--- a/sc/source/ui/view/tabvwshg.cxx
+++ b/sc/source/ui/view/tabvwshg.cxx
@@ -63,8 +63,8 @@ void ScTabViewShell::InsertURLButton( const OUString& rName, const OUString& rUR
     SdrObject* pObj = SdrObjFactory::MakeNewObject(
         *pModel,
         SdrInventor::FmForm,
-        OBJ_FM_BUTTON,
-        pDrView->GetSdrPageView()->GetPage());
+        OBJ_FM_BUTTON);
+
     SdrUnoObj* pUnoCtrl = dynamic_cast<SdrUnoObj*>( pObj );
     OSL_ENSURE( pUnoCtrl, "no SdrUnoObj");
     if( !pUnoCtrl )
diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx
index 85bf6785b159..7a393f59777c 100644
--- a/sc/source/ui/view/viewfun5.cxx
+++ b/sc/source/ui/view/viewfun5.cxx
@@ -507,7 +507,7 @@ bool ScViewFunc::PasteDataFormat( SotClipboardFormatId nFormatId,
             for (sal_uInt16 i=0; i<nPages; i++)
             {
                 SdrPage* pPage = pModel->GetPage(i);
-                SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+                SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
                 SdrObject* pObject = aIter.Next();
                 while (pObject)
                 {
diff --git a/sc/source/ui/view/viewfun7.cxx b/sc/source/ui/view/viewfun7.cxx
index b264ac317289..a944754192cd 100644
--- a/sc/source/ui/view/viewfun7.cxx
+++ b/sc/source/ui/view/viewfun7.cxx
@@ -159,9 +159,6 @@ void ScViewFunc::PasteDraw( const Point& rLogicPos, SdrModel* pModel,
 
                 if (pNewObj!=nullptr)
                 {
-                    // pNewObj->SetModel(pDrawModel);
-                    pNewObj->SetPage(pDestPage);
-
                     //  copy graphics within the same model - always needs new name
                     if ( dynamic_cast<const SdrGrafObj*>( pNewObj) !=  nullptr && !bPasteIsMove )
                         pNewObj->SetName(static_cast<ScDrawLayer*>(pDrawModel)->GetNewGraphicName());
@@ -232,7 +229,7 @@ void ScViewFunc::PasteDraw( const Point& rLogicPos, SdrModel* pModel,
         // controls must be on SC_LAYER_CONTROLS
         if (pPage)
         {
-            SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
+            SdrObjListIter aIter( pPage, SdrIterMode::DeepNoGroups );
             SdrObject* pObject = aIter.Next();
             while (pObject)
             {
diff --git a/sd/qa/unit/data/xml/tdf100491_0.xml b/sd/qa/unit/data/xml/tdf100491_0.xml
old mode 100644
new mode 100755
index 0c250e6fc840..7e9c39007f0a
--- a/sd/qa/unit/data/xml/tdf100491_0.xml
+++ b/sd/qa/unit/data/xml/tdf100491_0.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <XShapes>
- <XShape positionX="3680" positionY="2451" sizeX="6" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <XShape positionX="3680" positionY="2451" sizeX="6" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
   <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
   <LineStart>
    <pointSequence>
@@ -35,7 +35,7 @@
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="4324" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <XShape positionX="4324" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
   <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
   <LineStart>
    <pointSequence>
@@ -70,7 +70,7 @@
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="4947" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <XShape positionX="4947" positionY="2449" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
   <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
   <LineStart>
    <pointSequence>
@@ -105,7 +105,7 @@
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="9401" positionY="2435" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <XShape positionX="9401" positionY="2435" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
   <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
   <LineStart>
    <pointSequence>
@@ -140,7 +140,7 @@
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="10043" positionY="2433" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 7" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <XShape positionX="10043" positionY="2433" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 7" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
   <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
   <LineStart>
    <pointSequence>
@@ -175,7 +175,7 @@
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="10669" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <XShape positionX="10669" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
   <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
   <LineStart>
    <pointSequence>
@@ -210,7 +210,7 @@
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="12466" positionY="2433" sizeX="6" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 9" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <XShape positionX="12466" positionY="2433" sizeX="6" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 9" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="TOP" textLeftDistance="250" textRightDistance="250" textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list