summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--basctl/source/dlged/dlged.cxx3
-rw-r--r--basctl/source/dlged/dlgedobj.cxx4
-rw-r--r--basctl/source/dlged/propbrw.cxx2
-rw-r--r--chart2/source/controller/main/ChartController_Tools.cxx4
-rw-r--r--chart2/source/controller/main/ChartTransferable.cxx2
-rw-r--r--chart2/source/controller/main/DrawCommandDispatch.cxx3
-rw-r--r--chart2/source/controller/main/SelectionHelper.cxx10
-rw-r--r--filter/source/msfilter/eschesdo.cxx2
-rw-r--r--filter/source/msfilter/svdfppt.cxx2
-rw-r--r--include/svx/scene3d.hxx16
-rw-r--r--include/svx/sdr/properties/properties.hxx2
-rw-r--r--include/svx/svditer.hxx34
-rw-r--r--include/svx/svdoashp.hxx3
-rw-r--r--include/svx/svdobj.hxx27
-rw-r--r--include/svx/svdoedge.hxx3
-rw-r--r--include/svx/svdograf.hxx3
-rw-r--r--include/svx/svdogrp.hxx17
-rw-r--r--include/svx/svdoole2.hxx3
-rw-r--r--include/svx/svdotext.hxx4
-rw-r--r--include/svx/svdpage.hxx58
-rw-r--r--include/svx/svdtypes.hxx14
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx6
-rw-r--r--reportdesign/source/ui/misc/UITools.cxx4
-rw-r--r--reportdesign/source/ui/report/ReportController.cxx6
-rw-r--r--reportdesign/source/ui/report/ReportSection.cxx5
-rw-r--r--reportdesign/source/ui/report/ViewsWindow.cxx2
-rw-r--r--reportdesign/source/ui/report/dlgedfunc.cxx4
-rw-r--r--reportdesign/source/ui/report/propbrw.cxx2
-rw-r--r--sc/CppunitTest_sc_subsequent_export_test.mk1
-rw-r--r--sc/source/core/data/documen5.cxx14
-rw-r--r--sc/source/core/data/documen9.cxx15
-rw-r--r--sc/source/core/data/document.cxx2
-rw-r--r--sc/source/core/data/drwlayer.cxx33
-rw-r--r--sc/source/core/data/postit.cxx6
-rw-r--r--sc/source/core/tool/charthelper.cxx12
-rw-r--r--sc/source/core/tool/chartlock.cxx2
-rw-r--r--sc/source/core/tool/detfunc.cxx14
-rw-r--r--sc/source/filter/excel/xiescher.cxx2
-rw-r--r--sc/source/filter/html/htmlexp2.cxx2
-rw-r--r--sc/source/filter/inc/xcl97rec.hxx10
-rw-r--r--sc/source/filter/xcl97/xcl97rec.cxx17
-rw-r--r--sc/source/ui/Accessibility/AccessibleDocument.cxx4
-rw-r--r--sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx2
-rw-r--r--sc/source/ui/app/client.cxx2
-rw-r--r--sc/source/ui/app/drwtrans.cxx14
-rw-r--r--sc/source/ui/docshell/dbdocfun.cxx2
-rw-r--r--sc/source/ui/drawfunc/fupoor.cxx2
-rw-r--r--sc/source/ui/drawfunc/fusel2.cxx4
-rw-r--r--sc/source/ui/navipi/content.cxx6
-rw-r--r--sc/source/ui/uitest/uiobject.cxx2
-rw-r--r--sc/source/ui/undo/undotab.cxx2
-rw-r--r--sc/source/ui/unoobj/ChartTools.cxx2
-rw-r--r--sc/source/ui/unoobj/chartuno.cxx6
-rw-r--r--sc/source/ui/unoobj/docuno.cxx2
-rw-r--r--sc/source/ui/unoobj/shapeuno.cxx16
-rw-r--r--sc/source/ui/unoobj/viewuno.cxx6
-rw-r--r--sc/source/ui/view/dbfunc4.cxx2
-rw-r--r--sc/source/ui/view/drawview.cxx6
-rw-r--r--sc/source/ui/view/tabvwshg.cxx4
-rw-r--r--sc/source/ui/view/viewfun5.cxx2
-rw-r--r--sc/source/ui/view/viewfun7.cxx5
-rwxr-xr-x[-rw-r--r--]sd/qa/unit/data/xml/tdf100491_0.xml32
-rw-r--r--sd/source/core/CustomAnimationCloner.cxx4
-rw-r--r--sd/source/core/CustomAnimationEffect.cxx4
-rw-r--r--sd/source/core/EffectMigration.cxx96
-rw-r--r--sd/source/core/drawdoc2.cxx4
-rw-r--r--sd/source/core/drawdoc3.cxx2
-rw-r--r--sd/source/core/drawdoc4.cxx8
-rw-r--r--sd/source/core/sdpage.cxx8
-rw-r--r--sd/source/core/sdpage2.cxx6
-rw-r--r--sd/source/core/undo/undoobjects.cxx10
-rw-r--r--sd/source/filter/html/htmlex.cxx8
-rw-r--r--sd/source/filter/ppt/ppt97animations.cxx4
-rw-r--r--sd/source/filter/ppt/pptin.cxx2
-rw-r--r--sd/source/ui/animations/motionpathtag.cxx7
-rw-r--r--sd/source/ui/app/sdmod2.cxx2
-rw-r--r--sd/source/ui/app/sdxfer.cxx2
-rw-r--r--sd/source/ui/dlg/sdtreelb.cxx10
-rw-r--r--sd/source/ui/docshell/docshel4.cxx2
-rw-r--r--sd/source/ui/docshell/docshell.cxx2
-rw-r--r--sd/source/ui/func/fuconbez.cxx2
-rw-r--r--sd/source/ui/func/fuinsert.cxx2
-rw-r--r--sd/source/ui/func/fupoor.cxx4
-rw-r--r--sd/source/ui/func/fusel.cxx4
-rw-r--r--sd/source/ui/func/futempl.cxx2
-rw-r--r--sd/source/ui/func/futext.cxx4
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx4
-rw-r--r--sd/source/ui/slidesorter/controller/SlsListener.cxx2
-rw-r--r--sd/source/ui/table/tablefunction.cxx2
-rw-r--r--sd/source/ui/tools/PreviewRenderer.cxx4
-rw-r--r--sd/source/ui/unoidl/SdUnoDrawView.cxx10
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx10
-rw-r--r--sd/source/ui/unoidl/unoobj.cxx12
-rw-r--r--sd/source/ui/unoidl/unopage.cxx26
-rw-r--r--sd/source/ui/view/DocumentRenderer.cxx4
-rw-r--r--sd/source/ui/view/OutlinerIterator.cxx8
-rw-r--r--sd/source/ui/view/drawview.cxx2
-rw-r--r--sd/source/ui/view/drviews4.cxx2
-rw-r--r--sd/source/ui/view/drviewse.cxx8
-rw-r--r--sd/source/ui/view/sdview.cxx32
-rw-r--r--sd/source/ui/view/sdview2.cxx8
-rw-r--r--sd/source/ui/view/sdview3.cxx12
-rw-r--r--sd/source/ui/view/sdview4.cxx6
-rw-r--r--svx/inc/sdr/properties/attributeproperties.hxx3
-rw-r--r--svx/inc/sdr/properties/graphicproperties.hxx3
-rw-r--r--svx/inc/sdr/properties/oleproperties.hxx3
-rw-r--r--svx/source/customshapes/EnhancedCustomShapeEngine.cxx2
-rw-r--r--svx/source/engine3d/helperhittest3d.cxx4
-rw-r--r--svx/source/engine3d/obj3d.cxx10
-rw-r--r--svx/source/engine3d/scene3d.cxx88
-rw-r--r--svx/source/engine3d/view3d.cxx18
-rw-r--r--svx/source/form/fmobj.cxx32
-rw-r--r--svx/source/form/fmpgeimp.cxx6
-rw-r--r--svx/source/form/fmshell.cxx2
-rw-r--r--svx/source/form/fmshimp.cxx8
-rw-r--r--svx/source/form/fmundo.cxx8
-rw-r--r--svx/source/form/fmview.cxx2
-rw-r--r--svx/source/form/fmvwimp.cxx16
-rw-r--r--svx/source/form/navigatortree.cxx6
-rw-r--r--svx/source/form/navigatortreemodel.cxx4
-rw-r--r--svx/source/inc/fmobj.hxx3
-rw-r--r--svx/source/sdr/contact/objectcontactofpageview.cxx8
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrobj.cxx4
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrpathobj.cxx2
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofgraphic.cxx2
-rw-r--r--svx/source/sdr/properties/attributeproperties.cxx61
-rw-r--r--svx/source/sdr/properties/graphicproperties.cxx17
-rw-r--r--svx/source/sdr/properties/itemsettools.cxx2
-rw-r--r--svx/source/sdr/properties/oleproperties.cxx19
-rw-r--r--svx/source/sdr/properties/properties.cxx6
-rw-r--r--svx/source/svdraw/svdcrtv.cxx8
-rw-r--r--svx/source/svdraw/svdedtv.cxx6
-rw-r--r--svx/source/svdraw/svdedtv1.cxx10
-rw-r--r--svx/source/svdraw/svdedtv2.cxx14
-rw-r--r--svx/source/svdraw/svdedxv.cxx2
-rw-r--r--svx/source/svdraw/svdetc.cxx2
-rw-r--r--svx/source/svdraw/svditer.cxx118
-rw-r--r--svx/source/svdraw/svdmark.cxx2
-rw-r--r--svx/source/svdraw/svdmodel.cxx2
-rw-r--r--svx/source/svdraw/svdmrkv.cxx4
-rw-r--r--svx/source/svdraw/svdoashp.cxx7
-rw-r--r--svx/source/svdraw/svdobj.cxx127
-rw-r--r--svx/source/svdraw/svdoedge.cxx99
-rw-r--r--svx/source/svdraw/svdograf.cxx31
-rw-r--r--svx/source/svdraw/svdogrp.cxx303
-rw-r--r--svx/source/svdraw/svdoole2.cxx31
-rw-r--r--svx/source/svdraw/svdotext.cxx19
-rw-r--r--svx/source/svdraw/svdotextdecomposition.cxx15
-rw-r--r--svx/source/svdraw/svdouno.cxx4
-rw-r--r--svx/source/svdraw/svdpage.cxx240
-rw-r--r--svx/source/svdraw/svdpagv.cxx10
-rw-r--r--svx/source/svdraw/svdsnpv.cxx2
-rw-r--r--svx/source/svdraw/svdundo.cxx13
-rw-r--r--svx/source/svdraw/svdviter.cxx2
-rw-r--r--svx/source/svdraw/svdxcgv.cxx12
-rw-r--r--svx/source/table/tablecontroller.cxx2
-rw-r--r--svx/source/unodraw/UnoGraphicExporter.cxx9
-rw-r--r--svx/source/unodraw/unopage.cxx1
-rw-r--r--svx/source/unodraw/unoshap2.cxx2
-rw-r--r--svx/source/unodraw/unoshap3.cxx4
-rw-r--r--svx/source/unodraw/unoshape.cxx57
-rw-r--r--svx/source/unodraw/unoshtxt.cxx6
-rw-r--r--sw/source/core/doc/docdraw.cxx4
-rw-r--r--sw/source/core/doc/textboxhelper.cxx2
-rw-r--r--sw/source/core/draw/dcontact.cxx16
-rw-r--r--sw/source/core/draw/dflyobj.cxx4
-rw-r--r--sw/source/core/draw/dview.cxx2
-rw-r--r--sw/source/core/frmedt/fecopy.cxx10
-rw-r--r--sw/source/core/frmedt/feshview.cxx4
-rw-r--r--sw/source/core/layout/flylay.cxx8
-rw-r--r--sw/source/core/layout/frmtool.cxx6
-rw-r--r--sw/source/filter/html/htmldrawreader.cxx3
-rw-r--r--sw/source/filter/ww8/docxsdrexport.cxx17
-rw-r--r--sw/source/filter/ww8/rtfattributeoutput.cxx17
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx16
-rw-r--r--sw/source/filter/ww8/ww8graf.cxx4
-rw-r--r--sw/source/filter/ww8/ww8graf2.cxx4
-rw-r--r--sw/source/filter/xml/swxml.cxx2
-rw-r--r--sw/source/uibase/dochdl/swdtflvr.cxx2
-rw-r--r--sw/source/uibase/shells/drwbassh.cxx2
-rw-r--r--sw/source/uibase/uno/unotxvw.cxx2
181 files changed, 1324 insertions, 1153 deletions
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
index 0c250e6fc840..7e9c39007f0a 100644..100755
--- 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">
<LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
<LineStart>
<pointSequence>
@@ -245,7 +245,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="13107" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 10" 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="13107" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 10" 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>
@@ -280,7 +280,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="13731" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 11" 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="13731" positionY="2431" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 11" 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>
@@ -315,7 +315,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="15872" positionY="2431" sizeX="6" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 12" 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="15872" positionY="2431" sizeX="6" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 12" 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>
@@ -350,7 +350,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="16513" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 13" 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="16513" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 13" 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>
@@ -385,7 +385,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="17137" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 14" 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="17137" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 14" 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>
@@ -420,7 +420,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="17772" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 15" 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="17772" positionY="2430" sizeX="5" sizeY="2988" type="com.sun.star.drawing.LineShape" name="Straight Connector 15" 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>
@@ -455,7 +455,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="6549" positionY="2438" sizeX="6" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 16" 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="6549" positionY="2438" sizeX="6" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 16" 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>
@@ -490,7 +490,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="7193" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 17" 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="7193" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 17" 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>
@@ -525,7 +525,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="7816" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 18" 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="7816" positionY="2435" sizeX="5" sizeY="2990" type="com.sun.star.drawing.LineShape" name="Straight Connector 18" 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>
diff --git a/sd/source/core/CustomAnimationCloner.cxx b/sd/source/core/CustomAnimationCloner.cxx
index b87b46d75523..98896e618c3e 100644
--- a/sd/source/core/CustomAnimationCloner.cxx
+++ b/sd/source/core/CustomAnimationCloner.cxx
@@ -91,8 +91,8 @@ namespace sd
// create a dictionary to map source to cloned shapes
if( pSourcePage && pTargetPage )
{
- SdrObjListIter aSourceIter( *pSourcePage, SdrIterMode::DeepWithGroups );
- SdrObjListIter aTargetIter( *pTargetPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aSourceIter( pSourcePage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aTargetIter( pTargetPage, SdrIterMode::DeepWithGroups );
while( aSourceIter.IsMore() && aTargetIter.IsMore() )
{
diff --git a/sd/source/core/CustomAnimationEffect.cxx b/sd/source/core/CustomAnimationEffect.cxx
index 1473358706fc..0b18595be1de 100644
--- a/sd/source/core/CustomAnimationEffect.cxx
+++ b/sd/source/core/CustomAnimationEffect.cxx
@@ -1543,7 +1543,7 @@ void CustomAnimationEffect::updateSdrPathObjFromPath( SdrPathObj& rPathObj )
SdrObject* pObj = GetSdrObjectFromXShape( getTargetShape() );
if( pObj )
{
- SdrPage* pPage = pObj->GetPage();
+ SdrPage* pPage = pObj->getSdrPageFromSdrObject();
if( pPage )
{
const Size aPageSize( pPage->GetSize() );
@@ -1583,7 +1583,7 @@ void CustomAnimationEffect::updatePathFromSdrPathObj( const SdrPathObj& rPathObj
aPolyPoly.transform(basegfx::utils::createTranslateB2DHomMatrix(-aCenter.X(), -aCenter.Y()));
- SdrPage* pPage = pObj->GetPage();
+ SdrPage* pPage = pObj->getSdrPageFromSdrObject();
if( pPage )
{
const Size aPageSize( pPage->GetSize() );
diff --git a/sd/source/core/EffectMigration.cxx b/sd/source/core/EffectMigration.cxx
index 305ca6e9a585..6fd8671755fa 100644
--- a/sd/source/core/EffectMigration.cxx
+++ b/sd/source/core/EffectMigration.cxx
@@ -406,14 +406,34 @@ EffectSequence::iterator ImplFindEffect( MainSequencePtr const & pMainSequence,
static bool implIsInsideGroup( SdrObject const * pObj )
{
- return pObj && pObj->getParentOfSdrObject() && pObj->getParentOfSdrObject()->GetUpList();
+ // TTTT for current state of transition, SdrObject has a parent*
+ // to a SdrObjList. That may be a SdrPage or a SdrObjGroup, both
+ // are already derived from SdrObjList. To finally check, use
+ // the method 'getSdrObjectFromSdrObjList' - if it's not a SdrPage,
+ // it will return SdrObjGroup or E3dScene -> SdrObject.
+ // For future states, test for SdrObject. Trying to get the SdrPage
+ // will in the future depend on the Object(this) to be inserted to a
+ // SdrPage, regardless of e.g. being a group member.
+ if(nullptr == pObj)
+ {
+ return false;
+ }
+
+ SdrObjList* pSdrObjList(pObj->getParentOfSdrObject());
+
+ if(nullptr == pSdrObjList)
+ {
+ return false;
+ }
+
+ return (nullptr != pSdrObjList->getSdrObjectFromSdrObjList());
}
void EffectMigration::SetAnimationEffect( SvxShape* pShape, AnimationEffect eEffect )
{
- DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->GetPage(),
+ DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->getSdrPageFromSdrObject(),
"sd::EffectMigration::SetAnimationEffect(), invalid argument!" );
- if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->GetPage() )
+ if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->getSdrPageFromSdrObject() )
return;
SdrObject* pObj = pShape->GetSdrObject();
@@ -432,7 +452,7 @@ void EffectMigration::SetAnimationEffect( SvxShape* pShape, AnimationEffect eEff
const CustomAnimationPresets& rPresets = CustomAnimationPresets::getCustomAnimationPresets();
CustomAnimationPresetPtr pPreset( rPresets.getEffectDescriptor( aPresetId ) );
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
if( pPreset.get() && pMainSequence.get() )
{
@@ -487,7 +507,7 @@ void EffectMigration::SetAnimationEffect( SvxShape* pShape, AnimationEffect eEff
{
CustomAnimationEffectPtr pEffect( new CustomAnimationEffect( xNode ) );
pEffect->setTarget( makeAny( xShape ) );
- SdPage* pPage = dynamic_cast< SdPage* >( pObj->GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( pObj->getSdrPageFromSdrObject() );
const bool bManual = (pPage == nullptr) || (pPage->GetPresChange() == PRESCHANGE_MANUAL);
if( !bManual )
pEffect->setNodeType( EffectNodeType::AFTER_PREVIOUS );
@@ -535,7 +555,7 @@ AnimationEffect EffectMigration::GetAnimationEffect( SvxShape* pShape )
OUString aPresetSubType;
SdrObject* pObj = pShape->GetSdrObject();
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
if( pMainSequence.get() )
{
@@ -573,9 +593,9 @@ AnimationEffect EffectMigration::GetAnimationEffect( SvxShape* pShape )
void EffectMigration::SetTextAnimationEffect( SvxShape* pShape, AnimationEffect eEffect )
{
- DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->GetPage(),
+ DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->getSdrPageFromSdrObject(),
"sd::EffectMigration::SetAnimationEffect(), invalid argument!" );
- if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->GetPage() )
+ if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->getSdrPageFromSdrObject() )
return;
SdrObject* pObj = pShape->GetSdrObject();
@@ -603,7 +623,7 @@ void EffectMigration::SetTextAnimationEffect( SvxShape* pShape, AnimationEffect
// create an effect from this preset
CustomAnimationPresetPtr pPreset( rPresets.getEffectDescriptor( aPresetId ) );
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
if( pPreset.get() && pMainSequence.get() )
{
@@ -652,7 +672,7 @@ void EffectMigration::SetTextAnimationEffect( SvxShape* pShape, AnimationEffect
pShapeEffect->setDuration( 0.1 );
pMainSequence->append( pShapeEffect );
- SdPage* pPage = dynamic_cast< SdPage* >( pObj->GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( pObj->getSdrPageFromSdrObject() );
if( pPage && pPage->GetPresChange() != PRESCHANGE_MANUAL )
pShapeEffect->setNodeType( EffectNodeType::AFTER_PREVIOUS );
}
@@ -661,7 +681,7 @@ void EffectMigration::SetTextAnimationEffect( SvxShape* pShape, AnimationEffect
if( pShapeEffect.get() )
{
- SdPage* pPage = dynamic_cast< SdPage* >( pObj->GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( pObj->getSdrPageFromSdrObject() );
const bool bManual = (pPage == nullptr) || (pPage->GetPresChange() == PRESCHANGE_MANUAL);
// now create effects for each paragraph
@@ -717,7 +737,7 @@ AnimationEffect EffectMigration::GetTextAnimationEffect( SvxShape* pShape )
SdrObject* pObj = pShape->GetSdrObject();
if( pObj )
{
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
if( pMainSequence.get() )
{
@@ -800,9 +820,9 @@ double EffectMigration::ConvertAnimationSpeed( AnimationSpeed eSpeed )
void EffectMigration::SetAnimationSpeed( SvxShape* pShape, AnimationSpeed eSpeed )
{
- DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->GetPage(),
+ DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->getSdrPageFromSdrObject(),
"sd::EffectMigration::SetAnimationEffect(), invalid argument!" );
- if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->GetPage() )
+ if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->getSdrPageFromSdrObject() )
return;
SdrObject* pObj = pShape->GetSdrObject();
@@ -811,7 +831,7 @@ void EffectMigration::SetAnimationSpeed( SvxShape* pShape, AnimationSpeed eSpeed
double fDuration = ConvertAnimationSpeed( eSpeed );
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -836,7 +856,7 @@ void EffectMigration::SetAnimationSpeed( SvxShape* pShape, AnimationSpeed eSpeed
AnimationSpeed EffectMigration::GetAnimationSpeed( SvxShape* pShape )
{
SdrObject* pObj = pShape->GetSdrObject();
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -876,16 +896,16 @@ AnimationSpeed EffectMigration::ConvertDuration( double fDuration )
void EffectMigration::SetDimColor( SvxShape* pShape, sal_Int32 nColor )
{
- DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->GetPage(),
+ DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->getSdrPageFromSdrObject(),
"sd::EffectMigration::SetAnimationEffect(), invalid argument!" );
- if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->GetPage() )
+ if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->getSdrPageFromSdrObject() )
return;
SdrObject* pObj = pShape->GetSdrObject();
if( implIsInsideGroup( pObj ) )
return;
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -914,9 +934,9 @@ sal_Int32 EffectMigration::GetDimColor( SvxShape* pShape )
if( pShape )
{
SdrObject* pObj = pShape->GetSdrObject();
- if( pObj && pObj->GetPage() )
+ if( pObj && pObj->getSdrPageFromSdrObject() )
{
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
EffectSequence::iterator aIter;
@@ -940,16 +960,16 @@ sal_Int32 EffectMigration::GetDimColor( SvxShape* pShape )
void EffectMigration::SetDimHide( SvxShape* pShape, bool bDimHide )
{
- DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->GetPage(),
+ DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->getSdrPageFromSdrObject(),
"sd::EffectMigration::SetAnimationEffect(), invalid argument!" );
- if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->GetPage() )
+ if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->getSdrPageFromSdrObject() )
return;
SdrObject* pObj = pShape->GetSdrObject();
if( implIsInsideGroup( pObj ) )
return;
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -981,9 +1001,9 @@ bool EffectMigration::GetDimHide( SvxShape* pShape )
if( pShape )
{
SdrObject* pObj = pShape->GetSdrObject();
- if( pObj && pObj->GetPage() )
+ if( pObj && pObj->getSdrPageFromSdrObject() )
{
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -1007,9 +1027,9 @@ bool EffectMigration::GetDimHide( SvxShape* pShape )
void EffectMigration::SetDimPrevious( SvxShape* pShape, bool bDimPrevious )
{
- DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->GetPage(),
+ DBG_ASSERT( pShape && pShape->GetSdrObject() && pShape->GetSdrObject()->getSdrPageFromSdrObject(),
"sd::EffectMigration::SetAnimationEffect(), invalid argument!" );
- if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->GetPage() )
+ if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->getSdrPageFromSdrObject() )
return;
SdrObject* pObj = pShape->GetSdrObject();
@@ -1021,7 +1041,7 @@ void EffectMigration::SetDimPrevious( SvxShape* pShape, bool bDimPrevious )
if( bDimPrevious )
aColor <<= COL_LIGHTGRAY;
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -1051,9 +1071,9 @@ bool EffectMigration::GetDimPrevious( SvxShape* pShape )
if( pShape )
{
SdrObject* pObj = pShape->GetSdrObject();
- if( pObj && pObj->GetPage() )
+ if( pObj && pObj->getSdrPageFromSdrObject() )
{
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -1077,11 +1097,11 @@ bool EffectMigration::GetDimPrevious( SvxShape* pShape )
void EffectMigration::SetPresentationOrder( SvxShape* pShape, sal_Int32 nNewPos )
{
- if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->GetPage() )
+ if( !pShape || !pShape->GetSdrObject() || !pShape->GetSdrObject()->getSdrPageFromSdrObject() )
return;
SdrObject* pObj = pShape->GetSdrObject();
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
EffectSequence& rSequence = pMainSequence->getSequence();
sal_Int32 nPos;
@@ -1173,7 +1193,7 @@ sal_Int32 EffectMigration::GetPresentationOrder( SvxShape* pShape )
sal_Int32 nPos = -1, nFound = -1;
SdrObject* pObj = pShape->GetSdrObject();
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
EffectSequence& rSequence = pMainSequence->getSequence();
@@ -1208,7 +1228,7 @@ void EffectMigration::UpdateSoundEffect( SvxShape* pShape, SdAnimationInfo const
if( pInfo )
{
SdrObject* pObj = pShape->GetSdrObject();
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -1248,9 +1268,9 @@ OUString EffectMigration::GetSoundFile( SvxShape* pShape )
if( pShape )
{
SdrObject* pObj = pShape->GetSdrObject();
- if( pObj && pObj->GetPage() )
+ if( pObj && pObj->getSdrPageFromSdrObject() )
{
- sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
const Reference< XShape > xShape( pShape );
@@ -1286,7 +1306,7 @@ void EffectMigration::SetAnimationPath( SvxShape* pShape, SdrPathObj const * pPa
if( pObj )
{
const Reference< XShape > xShape( pShape );
- SdPage* pPage = dynamic_cast< SdPage* >(pPathObj->GetPage());
+ SdPage* pPage = dynamic_cast< SdPage* >(pPathObj->getSdrPageFromSdrObject());
if( pPage )
{
std::shared_ptr< sd::MainSequence > pMainSequence( pPage->getMainSequence() );
diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx
index 1a38fb080e99..e8c9b312d99f 100644
--- a/sd/source/core/drawdoc2.cxx
+++ b/sd/source/core/drawdoc2.cxx
@@ -88,7 +88,7 @@ SdrObject* SdDrawDocument::GetObj(const OUString& rObjName) const
while (nPage < nMaxPages && !pObjFound)
{
pPage = static_cast<const SdPage*>( GetPage(nPage) );
- SdrObjListIter aIter(*pPage, SdrIterMode::DeepWithGroups);
+ SdrObjListIter aIter(pPage, SdrIterMode::DeepWithGroups);
while (aIter.IsMore() && !pObjFound)
{
@@ -113,7 +113,7 @@ SdrObject* SdDrawDocument::GetObj(const OUString& rObjName) const
while (nPage < nMaxMasterPages && !pObjFound)
{
pPage = static_cast<const SdPage*>( GetMasterPage(nPage) );
- SdrObjListIter aIter(*pPage, SdrIterMode::DeepWithGroups);
+ SdrObjListIter aIter(pPage, SdrIterMode::DeepWithGroups);
while (aIter.IsMore() && !pObjFound)
{
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index e598dc35e981..9be0f79798f2 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -1027,7 +1027,7 @@ bool SdDrawDocument::InsertBookmarkAsObject(
pBMView->EndListening(*pBookmarkDoc);
}
- pPage = pObj->GetPage();
+ pPage = pObj->getSdrPageFromSdrObject();
if (pPage->IsMasterPage())
{
diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx
index b886954196a2..21561130de0a 100644
--- a/sd/source/core/drawdoc4.cxx
+++ b/sd/source/core/drawdoc4.cxx
@@ -789,7 +789,7 @@ void SdDrawDocument::StartOnlineSpelling(bool bForceSpelling)
// Fill OnlineSpelling list
void SdDrawDocument::FillOnlineSpellingList(SdPage const * pPage)
{
- SdrObjListIter aIter(*pPage, SdrIterMode::Flat);
+ SdrObjListIter aIter(pPage, SdrIterMode::Flat);
while (aIter.IsMore())
{
@@ -806,8 +806,7 @@ void SdDrawDocument::FillOnlineSpellingList(SdPage const * pPage)
else if (pObj->GetObjIdentifier() == OBJ_GRUP)
{
// Found a group object
- SdrObjListIter aGroupIter(*static_cast<SdrObjGroup*>(pObj)->GetSubList(),
- SdrIterMode::DeepNoGroups);
+ SdrObjListIter aGroupIter(static_cast< SdrObjGroup* >(pObj)->GetSubList(), SdrIterMode::DeepNoGroups);
bool bSubTextObjFound = false;
@@ -847,8 +846,7 @@ IMPL_LINK_NOARG(SdDrawDocument, OnlineSpellingHdl, Timer *, void)
else if (pObj->GetObjIdentifier() == OBJ_GRUP)
{
// Found a group object
- SdrObjListIter aGroupIter(*static_cast<SdrObjGroup*>(pObj)->GetSubList(),
- SdrIterMode::DeepNoGroups);
+ SdrObjListIter aGroupIter(static_cast< SdrObjGroup* >(pObj)->GetSubList(), SdrIterMode::DeepNoGroups);
while (aGroupIter.IsMore())
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 96835106736d..377b01ab78f7 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -664,7 +664,7 @@ SfxStyleSheet* SdPage::GetStyleSheetForPresObj(PresObjKind eObjKind) const
slides masterpage */
SdStyleSheet* SdPage::getPresentationStyle( sal_uInt32 nHelpId ) const
{
- OUString aStyleName( mpPage->GetLayoutName() );
+ OUString aStyleName( GetLayoutName() );
const OUString aSep( SD_LT_SEPARATOR );
sal_Int32 nIndex = aStyleName.indexOf(aSep);
if( nIndex != -1 )
@@ -2826,7 +2826,7 @@ bool SdPage::checkVisibility(
if( ( pObj->GetObjInventor() == SdrInventor::Default ) && ( pObj->GetObjIdentifier() == OBJ_TEXT ) )
{
- const SdPage* pCheckPage = dynamic_cast< const SdPage* >(pObj->GetPage());
+ const SdPage* pCheckPage = dynamic_cast< const SdPage* >(pObj->getSdrPageFromSdrObject());
if( pCheckPage )
{
@@ -2873,7 +2873,7 @@ bool SdPage::checkVisibility(
// i63977, do not print SdrpageObjs from master pages
if( ( pObj->GetObjInventor() == SdrInventor::Default ) && ( pObj->GetObjIdentifier() == OBJ_PAGE ) )
{
- if( pObj->GetPage() && pObj->GetPage()->IsMasterPage() )
+ if( pObj->getSdrPageFromSdrObject() && pObj->getSdrPageFromSdrObject()->IsMasterPage() )
return false;
}
@@ -2953,7 +2953,7 @@ void SdPage::CalculateHandoutAreas( SdDrawDocument& rModel, AutoLayout eLayout,
if( eLayout == AUTOLAYOUT_NONE )
{
// use layout from handout master
- SdrObjListIter aShapeIter (rHandoutMaster);
+ SdrObjListIter aShapeIter(&rHandoutMaster);
std::vector< ::tools::Rectangle > vSlidesAreas;
while ( aShapeIter.IsMore() )
diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index ee1f75059709..15ba777f578c 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -391,8 +391,8 @@ void SdPage::lateInit(const SdPage& rSrcPage)
rSrcPage.cloneAnimations(*this);
// fix user calls for duplicated slide
- SdrObjListIter aSourceIter( rSrcPage, SdrIterMode::DeepWithGroups );
- SdrObjListIter aTargetIter( *this, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aSourceIter( &rSrcPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aTargetIter( this, SdrIterMode::DeepWithGroups );
while( aSourceIter.IsMore() && aTargetIter.IsMore() )
{
@@ -477,7 +477,7 @@ void SdPage::getAlienAttributes( css::uno::Any& rAttributes )
void SdPage::RemoveEmptyPresentationObjects()
{
- SdrObjListIter aShapeIter( *this, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aShapeIter( this, SdrIterMode::DeepWithGroups );
SdrObject* pShape;
for( pShape = aShapeIter.Next(); pShape; pShape = aShapeIter.Next() )
diff --git a/sd/source/core/undo/undoobjects.cxx b/sd/source/core/undo/undoobjects.cxx
index d8db1329af56..9a342680ae76 100644
--- a/sd/source/core/undo/undoobjects.cxx
+++ b/sd/source/core/undo/undoobjects.cxx
@@ -45,7 +45,7 @@ ViewShellId SdUndoAction::GetViewShellId() const
UndoRemovePresObjectImpl::UndoRemovePresObjectImpl( SdrObject& rObject )
{
- SdPage* pPage = dynamic_cast< SdPage* >( rObject.GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( rObject.getSdrPageFromSdrObject() );
if( pPage )
{
if( pPage->IsPresObj(&rObject) )
@@ -177,7 +177,7 @@ UndoObjectSetText::UndoObjectSetText( SdrObject& rObject, sal_Int32 nText )
, mbNewEmptyPresObj(false)
, mxSdrObject( &rObject )
{
- SdPage* pPage = dynamic_cast< SdPage* >( rObject.GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( rObject.getSdrPageFromSdrObject() );
if( pPage && pPage->hasAnimationNode() )
{
css::uno::Reference< css::drawing::XShape > xShape( rObject.getUnoShape(), css::uno::UNO_QUERY );
@@ -254,7 +254,7 @@ UndoObjectPresentationKind::UndoObjectPresentationKind(SdrObject& rObject)
: SdrUndoObj(rObject)
, meOldKind(PRESOBJ_NONE)
, meNewKind(PRESOBJ_NONE)
-, mxPage( static_cast<SdPage*>(rObject.GetPage()) )
+, mxPage( static_cast<SdPage*>(rObject.getSdrPageFromSdrObject()) )
, mxSdrObject( &rObject )
{
DBG_ASSERT( mxPage.is(), "sd::UndoObjectPresentationKind::UndoObjectPresentationKind(), does not work for shapes without a slide!" );
@@ -307,7 +307,7 @@ void UndoAutoLayoutPosAndSize::Redo()
UndoGeoObject::UndoGeoObject( SdrObject& rNewObj )
: SdrUndoGeoObj( rNewObj )
-, mxPage( static_cast<SdPage*>(rNewObj.GetPage()) )
+, mxPage( static_cast<SdPage*>(rNewObj.getSdrPageFromSdrObject()) )
, mxSdrObject( &rNewObj )
{
}
@@ -348,7 +348,7 @@ void UndoGeoObject::Redo()
UndoAttrObject::UndoAttrObject( SdrObject& rObject, bool bStyleSheet1, bool bSaveText )
: SdrUndoAttrObj( rObject, bStyleSheet1, bSaveText )
-, mxPage( static_cast<SdPage*>(rObject.GetPage()) )
+, mxPage( static_cast<SdPage*>(rObject.getSdrPageFromSdrObject()) )
, mxSdrObject( &rObject )
{
}
diff --git a/sd/source/filter/html/htmlex.cxx b/sd/source/filter/html/htmlex.cxx
index f3dc165fabda..7dd92d1d7558 100644
--- a/sd/source/filter/html/htmlex.cxx
+++ b/sd/source/filter/html/htmlex.cxx
@@ -1294,7 +1294,7 @@ void HtmlExport::WriteTable(OUStringBuffer& aStr, SdrTableObj const * pTableObje
void HtmlExport::WriteObjectGroup(OUStringBuffer& aStr, SdrObjGroup const * pObjectGroup, SdrOutliner* pOutliner,
const Color& rBackgroundColor, bool bHeadLine)
{
- SdrObjListIter aGroupIterator(*pObjectGroup->GetSubList(), SdrIterMode::DeepNoGroups);
+ SdrObjListIter aGroupIterator(pObjectGroup->GetSubList(), SdrIterMode::DeepNoGroups);
while (aGroupIterator.IsMore())
{
SdrObject* pCurrentObject = aGroupIterator.Next();
@@ -1560,7 +1560,7 @@ bool HtmlExport::CreateHtmlForPresPages()
while (!bMasterDone)
{
// sal_True = backwards
- SdrObjListIter aIter(*pPage, SdrIterMode::DeepWithGroups, true);
+ SdrObjListIter aIter(pPage, SdrIterMode::DeepWithGroups, true);
SdrObject* pObject = aIter.Next();
while (pObject)
@@ -1727,7 +1727,7 @@ bool HtmlExport::CreateHtmlForPresPages()
// is the bookmark a object?
pObj = mpDoc->GetObj( aURL );
if (pObj)
- nPgNum = pObj->GetPage()->GetPageNum();
+ nPgNum = pObj->getSdrPageFromSdrObject()->GetPageNum();
}
if (nPgNum != SDRPAGE_NOTFOUND)
{
@@ -1813,7 +1813,7 @@ bool HtmlExport::CreateHtmlForPresPages()
// is the bookmark a object?
pObj = mpDoc->GetObj(pInfo->GetBookmark());
if (pObj)
- nPgNum = pObj->GetPage()->GetPageNum();
+ nPgNum = pObj->getSdrPageFromSdrObject()->GetPageNum();
}
if( SDRPAGE_NOTFOUND != nPgNum )
diff --git a/sd/source/filter/ppt/ppt97animations.cxx b/sd/source/filter/ppt/ppt97animations.cxx
index d90cf8d5ad49..2f5b5baf65f4 100644
--- a/sd/source/filter/ppt/ppt97animations.cxx
+++ b/sd/source/filter/ppt/ppt97animations.cxx
@@ -549,7 +549,7 @@ void Ppt97Animation::createAndSetCustomAnimationEffect( SdrObject* pObj )
if( !HasEffect() )
return;
- if( !pObj || !pObj->GetPage() )
+ if( !pObj || !pObj->getSdrPageFromSdrObject() )
{
OSL_FAIL("no valid SdrObject or page found for ppt import");
return;
@@ -561,7 +561,7 @@ void Ppt97Animation::createAndSetCustomAnimationEffect( SdrObject* pObj )
OSL_FAIL("no XShape interface found for ppt import");
return;
}
- ::sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->GetPage())->getMainSequence();
+ ::sd::MainSequencePtr pMainSequence = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject())->getMainSequence();
if( !pMainSequence.get() )
{
OSL_FAIL("no MainSequence found for ppt import");
diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
index 122262da6566..cda8adb45b0e 100644
--- a/sd/source/filter/ppt/pptin.cxx
+++ b/sd/source/filter/ppt/pptin.cxx
@@ -1841,7 +1841,7 @@ void ImplSdPPTImport::ImportPageEffect( SdPage* pPage, const bool bNewAnimations
tAnimationVector aAnimationsOnThisPage;
// add effects from page in correct order
- SdrObjListIter aSdrIter( *pPage, SdrIterMode::Flat );
+ SdrObjListIter aSdrIter( pPage, SdrIterMode::Flat );
while ( aSdrIter.IsMore() )
{
SdrObject* pObj = aSdrIter.Next();
diff --git a/sd/source/ui/animations/motionpathtag.cxx b/sd/source/ui/animations/motionpathtag.cxx
index b5189251a276..64b22607ef38 100644
--- a/sd/source/ui/animations/motionpathtag.cxx
+++ b/sd/source/ui/animations/motionpathtag.cxx
@@ -321,13 +321,6 @@ MotionPathTag::MotionPathTag( CustomAnimationPane& rPane, ::sd::View& rView, con
if (mxOrigin.is())
maOriginPos = mxOrigin->getPosition();
- SdrPage* pPage = mrView.GetSdrPageView()->GetPage();
- if( pPage )
- {
- mpPathObj->SetPage( pPage );
- mpPathObj->setParentOfSdrObject( pPage );
- }
-
XDash aDash( css::drawing::DashStyle_RECT, 1, 80, 1, 80, 80);
OUString aEmpty( "?" );
mpPathObj->SetMergedItem( XLineDashItem( aEmpty, aDash ) );
diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx
index 926bca3600f0..6392abf9bc5d 100644
--- a/sd/source/ui/app/sdmod2.cxx
+++ b/sd/source/ui/app/sdmod2.cxx
@@ -129,7 +129,7 @@ static SdPage* GetCurrentPage( sd::ViewShell const * pViewSh, EditFieldInfo cons
if( pTextObj )
{
- pPage = dynamic_cast< SdPage* >( pTextObj->GetPage() );
+ pPage = dynamic_cast< SdPage* >( pTextObj->getSdrPageFromSdrObject() );
}
}
diff --git a/sd/source/ui/app/sdxfer.cxx b/sd/source/ui/app/sdxfer.cxx
index 5db900b412bf..b55b5327d284 100644
--- a/sd/source/ui/app/sdxfer.cxx
+++ b/sd/source/ui/app/sdxfer.cxx
@@ -344,7 +344,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 )
{
diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx
index 8e225173a95f..99eea6a6a9cd 100644
--- a/sd/source/ui/dlg/sdtreelb.cxx
+++ b/sd/source/ui/dlg/sdtreelb.cxx
@@ -265,7 +265,7 @@ OUString SdPageObjsTLB::getAltLongDescText(SvTreeListEntry* pEntry , bool isAltT
const SdPage* pPage = static_cast<const SdPage*>( mpDoc->GetPage( pageNo ) );
if( pPage->GetPageKind() != PageKind::Standard ) continue;
if( pPage->GetName() != ParentName ) continue;
- SdrObjListIter aIter( *pPage, SdrIterMode::Flat );
+ SdrObjListIter aIter( pPage, SdrIterMode::Flat );
while( aIter.IsMore() )
{
pObj = aIter.Next();
@@ -524,7 +524,7 @@ void SdPageObjsTLB::AddShapeList (
pUserData);
SdrObjListIter aIter(
- rList,
+ &rList,
!rList.HasObjectNavigationOrder() /* use navigation order, if available */,
SdrIterMode::Flat);
@@ -641,7 +641,7 @@ bool SdPageObjsTLB::IsEqualToShapeList(SvTreeListEntry*& pEntry, const SdrObjLis
pEntry = Next(pEntry);
- SdrObjListIter aIter(rList,
+ SdrObjListIter aIter(&rList,
!rList.HasObjectNavigationOrder() /* use navigation order, if available */,
SdrIterMode::Flat);
@@ -772,7 +772,7 @@ void SdPageObjsTLB::RequestingChildren( SvTreeListEntry* pFileEntry )
TREELIST_APPEND,
reinterpret_cast< void* >( 1 ) );
- SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
while( aIter.IsMore() )
{
@@ -1269,7 +1269,7 @@ TriState SdPageObjsTLB::NotifyMoving(
if (pTargetObject != nullptr && pSourceObject != nullptr)
{
- SdrPage* pObjectList = pSourceObject->GetPage();
+ SdrPage* pObjectList = pSourceObject->getSdrPageFromSdrObject();
if (pObjectList != nullptr)
{
sal_uInt32 nNewPosition;
diff --git a/sd/source/ui/docshell/docshel4.cxx b/sd/source/ui/docshell/docshel4.cxx
index 61c8b65ee6b9..fb979fbfafa9 100644
--- a/sd/source/ui/docshell/docshel4.cxx
+++ b/sd/source/ui/docshell/docshel4.cxx
@@ -767,7 +767,7 @@ void DrawDocShell::GotoBookmark(const OUString& rBookmark)
if (pObj)
{
- nPageNumber = pObj->GetPage()->GetPageNum();
+ nPageNumber = pObj->getSdrPageFromSdrObject()->GetPageNum();
}
}
}
diff --git a/sd/source/ui/docshell/docshell.cxx b/sd/source/ui/docshell/docshell.cxx
index 4a9d7cfe9323..9a01c54095ac 100644
--- a/sd/source/ui/docshell/docshell.cxx
+++ b/sd/source/ui/docshell/docshell.cxx
@@ -282,7 +282,7 @@ void DrawDocShell::GetState(SfxItemSet &rSet)
sal_uInt16 nCount = mpDoc->GetPageCount();
for ( sal_uInt16 itPage = 0; itPage < nCount && !bLanguageFound; itPage++ )
{
- SdrObjListIter aListIter(*mpDoc->GetPage(itPage), SdrIterMode::DeepWithGroups);
+ SdrObjListIter aListIter(mpDoc->GetPage(itPage), SdrIterMode::DeepWithGroups);
while ( aListIter.IsMore() && !bLanguageFound )
{
pObj = aListIter.Next();
diff --git a/sd/source/ui/func/fuconbez.cxx b/sd/source/ui/func/fuconbez.cxx
index cad7080afd6b..87ccd670215e 100644
--- a/sd/source/ui/func/fuconbez.cxx
+++ b/sd/source/ui/func/fuconbez.cxx
@@ -171,7 +171,7 @@ bool FuConstructBezierPolygon::MouseButtonUp(const MouseEvent& rMEvt )
if( bCreated && maTargets.hasValue() )
{
SdrPathObj* pPathObj = dynamic_cast< SdrPathObj* >( mpView->GetSdrPageView()->GetObjList()->GetObj( nCount ) );
- SdPage* pPage = dynamic_cast< SdPage* >( pPathObj ? pPathObj->GetPage() : nullptr );
+ SdPage* pPage = dynamic_cast< SdPage* >( pPathObj ? pPathObj->getSdrPageFromSdrObject() : nullptr );
if( pPage )
{
std::shared_ptr< sd::MainSequence > pMainSequence( pPage->getMainSequence() );
diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx
index d334d8908455..59da1f106faf 100644
--- a/sd/source/ui/func/fuinsert.cxx
+++ b/sd/source/ui/func/fuinsert.cxx
@@ -395,7 +395,7 @@ void FuInsertOLE::DoExecute( SfxRequest& rReq )
// if we have a pick obj we need to make this new ole a pres obj replacing the current pick obj
if( pPickObj )
{
- SdPage* pPage = static_cast< SdPage* >(pPickObj->GetPage());
+ SdPage* pPage = static_cast< SdPage* >(pPickObj->getSdrPageFromSdrObject());
if(pPage && pPage->IsPresObj(pPickObj))
{
pPage->InsertPresObj( pOleObj, ePresObjKind );
diff --git a/sd/source/ui/func/fupoor.cxx b/sd/source/ui/func/fupoor.cxx
index 3a18ec79469d..a8ba3eb89d22 100644
--- a/sd/source/ui/func/fupoor.cxx
+++ b/sd/source/ui/func/fupoor.cxx
@@ -208,7 +208,7 @@ bool FuPoor::KeyInput(const KeyEvent& rKEvt)
if(pActualPage)
{
- SdrObjListIter aIter(*pActualPage, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pActualPage, SdrIterMode::DeepNoGroups);
while(aIter.IsMore() && !pCandidate)
{
@@ -840,7 +840,7 @@ bool FuPoor::KeyInput(const KeyEvent& rKEvt)
if(pActualPage)
{
- SdrObjListIter aIter(*pActualPage, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pActualPage, SdrIterMode::DeepNoGroups);
while(aIter.IsMore() && !pCandidate)
{
diff --git a/sd/source/ui/func/fusel.cxx b/sd/source/ui/func/fusel.cxx
index 93a1c7a96651..ea56b9e4d756 100644
--- a/sd/source/ui/func/fusel.cxx
+++ b/sd/source/ui/func/fusel.cxx
@@ -331,7 +331,7 @@ bool FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
// New: double click on selected Group object
// enter group
if ( ! bSelectionOnly
- && pObj->GetPage() == pPV->GetPage())
+ && pObj->getSdrPageFromSdrObject() == pPV->GetPage())
bReturn = pPV->EnterGroup(pObj);
}
}
@@ -339,7 +339,7 @@ bool FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
// #i71727# replaced else here with two possibilities, once the original else (!pObj)
// and also ignoring the found object when it's on a masterpage
- if(!pObj || (pObj->GetPage() && pObj->GetPage()->IsMasterPage()))
+ if(!pObj || (pObj->getSdrPageFromSdrObject() && pObj->getSdrPageFromSdrObject()->IsMasterPage()))
{
if(mpView->IsGroupEntered() && 2 == rMEvt.GetClicks())
{
diff --git a/sd/source/ui/func/futempl.cxx b/sd/source/ui/func/futempl.cxx
index 7402a939c813..8b6d0024b540 100644
--- a/sd/source/ui/func/futempl.cxx
+++ b/sd/source/ui/func/futempl.cxx
@@ -522,7 +522,7 @@ void FuTemplate::DoExecute( SfxRequest& rReq )
if( pPage )
{
- SdrObjListIter aIter( *pPage );
+ SdrObjListIter aIter( pPage );
while( aIter.IsMore() )
{
SdrObject* pObj = aIter.Next();
diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx
index 3d50a81139e9..f5e797c2d674 100644
--- a/sd/source/ui/func/futext.cxx
+++ b/sd/source/ui/func/futext.cxx
@@ -1017,7 +1017,7 @@ void FuText::Deactivate()
void FuText::SetInEditMode(const MouseEvent& rMEvt, bool bQuickDrag)
{
SdrPageView* pPV = mpView->GetSdrPageView();
- if( mxTextObj.is() && (mxTextObj->GetPage() == pPV->GetPage()) )
+ if( mxTextObj.is() && (mxTextObj->getSdrPageFromSdrObject() == pPV->GetPage()) )
{
mpView->SetCurrentObj(OBJ_TEXT);
@@ -1150,7 +1150,7 @@ void FuText::DeleteDefaultText()
{
if ( mxTextObj.is() && mxTextObj->IsEmptyPresObj() )
{
- SdPage* pPage = static_cast<SdPage*>( mxTextObj->GetPage() );
+ SdPage* pPage = static_cast<SdPage*>( mxTextObj->getSdrPageFromSdrObject() );
if (pPage)
{
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx
index b3c78d89978e..43cd19080218 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -1556,8 +1556,8 @@ sal_Int32 SlideshowImpl::getSlideNumberForBookmark( const OUString& rStrBookmark
if( pObj )
{
- nPgNum = pObj->GetPage()->GetPageNum();
- bIsMasterPage = pObj->GetPage()->IsMasterPage();
+ nPgNum = pObj->getSdrPageFromSdrObject()->GetPageNum();
+ bIsMasterPage = pObj->getSdrPageFromSdrObject()->IsMasterPage();
}
}
diff --git a/sd/source/ui/slidesorter/controller/SlsListener.cxx b/sd/source/ui/slidesorter/controller/SlsListener.cxx
index 2d48bf52f9e6..e31fee0b884d 100644
--- a/sd/source/ui/slidesorter/controller/SlsListener.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsListener.cxx
@@ -380,7 +380,7 @@ IMPL_LINK(Listener, EventMultiplexerCallback, ::sd::tools::EventMultiplexerEvent
if (rEvent.mpUserData != nullptr)
{
const SdrObject* pObject = static_cast<const SdrObject*>(rEvent.mpUserData);
- HandleShapeModification(pObject->GetPage());
+ HandleShapeModification(pObject->getSdrPageFromSdrObject());
}
break;
diff --git a/sd/source/ui/table/tablefunction.cxx b/sd/source/ui/table/tablefunction.cxx
index 818cde2f7c57..4e6892574088 100644
--- a/sd/source/ui/table/tablefunction.cxx
+++ b/sd/source/ui/table/tablefunction.cxx
@@ -204,7 +204,7 @@ void DrawViewShell::FuTable(SfxRequest& rReq)
// if we have a pick obj we need to make this new ole a pres obj replacing the current pick obj
if( pPickObj )
{
- SdPage* pPage = static_cast< SdPage* >(pPickObj->GetPage());
+ SdPage* pPage = static_cast< SdPage* >(pPickObj->getSdrPageFromSdrObject());
if(pPage && pPage->IsPresObj(pPickObj))
{
pObj->SetUserCall( pPickObj->GetUserCall() );
diff --git a/sd/source/ui/tools/PreviewRenderer.cxx b/sd/source/ui/tools/PreviewRenderer.cxx
index 23717ea3d16b..76f980e0f60c 100644
--- a/sd/source/ui/tools/PreviewRenderer.cxx
+++ b/sd/source/ui/tools/PreviewRenderer.cxx
@@ -493,7 +493,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewRedirector::createRedirected
{
SdrObject* pObject = rOriginal.GetViewContact().TryToGetSdrObject();
- if (pObject==nullptr || pObject->GetPage() == nullptr)
+ if (pObject==nullptr || pObject->getSdrPageFromSdrObject() == nullptr)
{
// not a SdrObject visualisation (maybe e.g. page) or no page
return sdr::contact::ViewObjectContactRedirector::createRedirectedPrimitive2DSequence(
@@ -501,7 +501,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewRedirector::createRedirected
rDisplayInfo);
}
- const bool bDoCreateGeometry (pObject->GetPage()->checkVisibility( rOriginal, rDisplayInfo, true));
+ const bool bDoCreateGeometry (pObject->getSdrPageFromSdrObject()->checkVisibility( rOriginal, rDisplayInfo, true));
if ( ! bDoCreateGeometry
&& (pObject->GetObjInventor() != SdrInventor::Default || pObject->GetObjIdentifier() != OBJ_PAGE))
diff --git a/sd/source/ui/unoidl/SdUnoDrawView.cxx b/sd/source/ui/unoidl/SdUnoDrawView.cxx
index 09289a73b976..7eea541fe2fc 100644
--- a/sd/source/ui/unoidl/SdUnoDrawView.cxx
+++ b/sd/source/ui/unoidl/SdUnoDrawView.cxx
@@ -163,7 +163,7 @@ sal_Bool SAL_CALL SdUnoDrawView::select( const Any& aSelection )
if( pShape && (pShape->GetSdrObject() != nullptr) )
{
SdrObject* pObj = pShape->GetSdrObject();
- pSdrPage = pObj->GetPage();
+ pSdrPage = pObj->getSdrPageFromSdrObject();
aObjects.push_back( pObj );
}
else
@@ -194,9 +194,9 @@ sal_Bool SAL_CALL SdUnoDrawView::select( const Any& aSelection )
if( pSdrPage == nullptr )
{
- pSdrPage = pObj->GetPage();
+ pSdrPage = pObj->getSdrPageFromSdrObject();
}
- else if( pSdrPage != pObj->GetPage() )
+ else if( pSdrPage != pObj->getSdrPageFromSdrObject() )
{
bOk = false;
break;
@@ -263,10 +263,10 @@ Any SAL_CALL SdUnoDrawView::getSelection()
continue;
SdrObject *pObj = pMark->GetMarkedSdrObj();
- if(pObj==nullptr || pObj->GetPage() == nullptr)
+ if(pObj==nullptr || pObj->getSdrPageFromSdrObject() == nullptr)
continue;
- Reference< drawing::XDrawPage > xPage( pObj->GetPage()->getUnoPage(), UNO_QUERY);
+ Reference< drawing::XDrawPage > xPage( pObj->getSdrPageFromSdrObject()->getUnoPage(), UNO_QUERY);
if(!xPage.is())
continue;
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 2c0c60302a02..416e936c20bc 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -1571,7 +1571,7 @@ sal_Int32 ImplPDFGetBookmarkPage( const OUString& rBookmark, SdDrawDocument cons
// is the bookmark a object ?
pObj = rDoc.GetObj( aBookmark );
if (pObj)
- nPgNum = pObj->GetPage()->GetPageNum();
+ nPgNum = pObj->getSdrPageFromSdrObject()->GetPageNum();
}
if ( nPgNum != SDRPAGE_NOTFOUND )
nPage = ( nPgNum - 1 ) / 2;
@@ -1791,9 +1791,9 @@ drawinglayer::primitive2d::Primitive2DContainer ImplRenderPaintProc::createRedir
{
drawinglayer::primitive2d::Primitive2DContainer xRetval;
- if(pObject->GetPage())
+ if(pObject->getSdrPageFromSdrObject())
{
- if(pObject->GetPage()->checkVisibility(rOriginal, rDisplayInfo, false))
+ if(pObject->getSdrPageFromSdrObject()->checkVisibility(rOriginal, rDisplayInfo, false))
{
if(IsVisible(pObject) && IsPrintable(pObject))
{
@@ -2207,12 +2207,12 @@ void SAL_CALL SdXImpressDocument::render( sal_Int32 nRenderer, const uno::Any& r
if( pShape )
{
SdrObject* pObj = pShape->GetSdrObject();
- if( pObj && pObj->GetPage()
+ if( pObj && pObj->getSdrPageFromSdrObject()
&& aImplRenderPaintProc.IsVisible( pObj )
&& aImplRenderPaintProc.IsPrintable( pObj ) )
{
if( !pPV )
- pPV = pView->ShowSdrPage( pObj->GetPage() );
+ pPV = pView->ShowSdrPage( pObj->getSdrPageFromSdrObject() );
if( pPV )
pView->MarkObj( pObj, pPV );
diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx
index 5b0922b148a4..72df58e77918 100644
--- a/sd/source/ui/unoidl/unoobj.cxx
+++ b/sd/source/ui/unoidl/unoobj.cxx
@@ -354,7 +354,7 @@ beans::PropertyState SAL_CALL SdXShape::getPropertyState( const OUString& Proper
else
{
SdrObject* pObj = mpShape->GetSdrObject();
- if( pObj == nullptr || ( pObj->GetPage()->IsMasterPage() && pObj->IsEmptyPresObj() ) )
+ if( pObj == nullptr || ( pObj->getSdrPageFromSdrObject()->IsMasterPage() && pObj->IsEmptyPresObj() ) )
return beans::PropertyState_DEFAULT_VALUE;
return mpShape->_getPropertyState( PropertyName );
@@ -492,7 +492,7 @@ void SAL_CALL SdXShape::setPropertyValue( const OUString& aPropertyName, const c
if(bIsAnimation)
{
SdrObjGroup* pGroup = dynamic_cast< SdrObjGroup* >(pObj);
- SdPage* pPage = pGroup ? dynamic_cast< SdPage* >(pGroup->GetPage()) : nullptr;
+ SdPage* pPage = pGroup ? dynamic_cast< SdPage* >(pGroup->getSdrPageFromSdrObject()) : nullptr;
if (pPage)
{
@@ -872,7 +872,7 @@ bool SdXShape::IsPresObj() const
SdrObject* pObj = mpShape->GetSdrObject();
if(pObj)
{
- SdPage* pPage = dynamic_cast<SdPage* >(pObj->GetPage());
+ SdPage* pPage = dynamic_cast<SdPage* >(pObj->getSdrPageFromSdrObject());
if(pPage)
return pPage->GetPresObjKind(pObj) != PRESOBJ_NONE;
}
@@ -908,7 +908,7 @@ OUString SdXShape::GetPlaceholderText() const
if( pObj == nullptr )
return OUString();
- SdPage* pPage = dynamic_cast< SdPage* >(pObj->GetPage());
+ SdPage* pPage = dynamic_cast< SdPage* >(pObj->getSdrPageFromSdrObject());
DBG_ASSERT( pPage, "no page?" );
if( pPage == nullptr )
return OUString();
@@ -972,7 +972,7 @@ void SdXShape::SetEmptyPresObj(bool bEmpty)
if( pOutliner == nullptr )
break;
- SdPage* pPage = dynamic_cast< SdPage* >(pObj->GetPage());
+ SdPage* pPage = dynamic_cast< SdPage* >(pObj->getSdrPageFromSdrObject());
DBG_ASSERT( pPage, "no page?" );
if( pPage == nullptr )
break;
@@ -1011,7 +1011,7 @@ void SdXShape::SetMasterDepend( bool bDepend ) throw()
{
if( bDepend )
{
- SdPage* pPage = dynamic_cast< SdPage* >(pObj->GetPage());
+ SdPage* pPage = dynamic_cast< SdPage* >(pObj->getSdrPageFromSdrObject());
pObj->SetUserCall( pPage );
}
else
diff --git a/sd/source/ui/unoidl/unopage.cxx b/sd/source/ui/unoidl/unopage.cxx
index 657a23ddc7ce..b612cc66ce46 100644
--- a/sd/source/ui/unoidl/unopage.cxx
+++ b/sd/source/ui/unoidl/unopage.cxx
@@ -404,24 +404,6 @@ SdrObject * SdGenericDrawPage::CreateSdrObject_( const Reference< drawing::XShap
if( !aType.startsWith( aPrefix ) )
{
SdrObject* pObj = SvxFmDrawPage::CreateSdrObject_( xShape );
- if( pObj && ( (pObj->GetObjInventor() != SdrInventor::Default) || (pObj->GetObjIdentifier() != OBJ_PAGE) ) )
- {
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
- // #i119287# similar to the code in the SdrObject methods the graphic and ole
- // SdrObjects need another default style than the rest, see task. Adding here, too.
- // TTTT: Same as for #i119287#: Can be removed in branch aw080 again
- const bool bIsSdrGrafObj(dynamic_cast< const SdrGrafObj* >(pObj) != nullptr);
- const bool bIsSdrOle2Obj(dynamic_cast< const SdrOle2Obj* >(pObj) != nullptr);
-
- if(bIsSdrGrafObj || bIsSdrOle2Obj)
- {
- pObj->NbcSetStyleSheet(rDoc.GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj(), true);
- }
- else
- {
- pObj->NbcSetStyleSheet(rDoc.GetDefaultStyleSheet(), true);
- }
- }
return pObj;
}
@@ -1902,7 +1884,7 @@ sal_Bool SAL_CALL SdPageLinkTargets::hasElements()
SdPage* pPage = mpUnoPage->GetPage();
if( pPage != nullptr )
{
- SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
while( aIter.IsMore() )
{
@@ -1948,7 +1930,7 @@ Sequence< OUString > SAL_CALL SdPageLinkTargets::getElementNames()
SdPage* pPage = mpUnoPage->GetPage();
if( pPage != nullptr )
{
- SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
while( aIter.IsMore() )
{
SdrObject* pObj = aIter.Next();
@@ -1965,7 +1947,7 @@ Sequence< OUString > SAL_CALL SdPageLinkTargets::getElementNames()
{
OUString* pStr = aSeq.getArray();
- SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
while( aIter.IsMore() )
{
SdrObject* pObj = aIter.Next();
@@ -1993,7 +1975,7 @@ SdrObject* SdPageLinkTargets::FindObject( const OUString& rName ) const throw()
if( pPage == nullptr )
return nullptr;
- SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aIter( pPage, SdrIterMode::DeepWithGroups );
while( aIter.IsMore() )
{
diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index b94f0713046a..ecb42f830904 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -952,7 +952,7 @@ namespace {
// Collect the page objects of the handout master.
std::vector<SdrPageObj*> aHandoutPageObjects;
- SdrObjListIter aShapeIter (rHandoutPage);
+ SdrObjListIter aShapeIter (&rHandoutPage);
while (aShapeIter.IsMore())
{
SdrPageObj* pPageObj = dynamic_cast<SdrPageObj*>(aShapeIter.Next());
@@ -1803,7 +1803,7 @@ private:
// Count page shapes.
sal_uInt32 nShapeCount (0);
- SdrObjListIter aShapeIter (rHandoutPage);
+ SdrObjListIter aShapeIter (&rHandoutPage);
while (aShapeIter.IsMore())
{
SdrPageObj* pPageObj = dynamic_cast<SdrPageObj*>(aShapeIter.Next());
diff --git a/sd/source/ui/view/OutlinerIterator.cxx b/sd/source/ui/view/OutlinerIterator.cxx
index c9cc081b7e3a..434f488b463c 100644
--- a/sd/source/ui/view/OutlinerIterator.cxx
+++ b/sd/source/ui/view/OutlinerIterator.cxx
@@ -553,7 +553,7 @@ IteratorImplBase* ViewIteratorImpl::Clone (IteratorImplBase* pObject) const
if (mpObjectIterator != nullptr)
{
- pIterator->mpObjectIterator = new SdrObjListIter(*mpPage, SdrIterMode::DeepNoGroups, !mbDirectionIsForward);
+ pIterator->mpObjectIterator = new SdrObjListIter(mpPage, SdrIterMode::DeepNoGroups, !mbDirectionIsForward);
// No direct way to set the object iterator to the current object.
pIterator->maPosition.mxObject.reset(nullptr);
@@ -598,7 +598,7 @@ void ViewIteratorImpl::GotoNextText()
SetPage (maPosition.mnPageIndex-1);
if (mpPage != nullptr)
- mpObjectIterator = new SdrObjListIter(*mpPage, SdrIterMode::DeepNoGroups, !mbDirectionIsForward);
+ mpObjectIterator = new SdrObjListIter(mpPage, SdrIterMode::DeepNoGroups, !mbDirectionIsForward);
if (mpObjectIterator!=nullptr && mpObjectIterator->IsMore())
maPosition.mxObject.reset(mpObjectIterator->Next());
else
@@ -650,7 +650,7 @@ void ViewIteratorImpl::SetPage (sal_Int32 nPageIndex)
// Set up object list iterator.
if (mpPage != nullptr)
- mpObjectIterator = new SdrObjListIter(*mpPage, SdrIterMode::DeepNoGroups, ! mbDirectionIsForward);
+ mpObjectIterator = new SdrObjListIter(mpPage, SdrIterMode::DeepNoGroups, ! mbDirectionIsForward);
else
mpObjectIterator = nullptr;
@@ -677,7 +677,7 @@ void ViewIteratorImpl::Reverse()
// Create reversed object list iterator.
delete mpObjectIterator;
if (mpPage != nullptr)
- mpObjectIterator = new SdrObjListIter(*mpPage, SdrIterMode::DeepNoGroups, ! mbDirectionIsForward);
+ mpObjectIterator = new SdrObjListIter(mpPage, SdrIterMode::DeepNoGroups, ! mbDirectionIsForward);
else
mpObjectIterator = nullptr;
diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx
index 95a4807e43c3..cdb8b2d85112 100644
--- a/sd/source/ui/view/drawview.cxx
+++ b/sd/source/ui/view/drawview.cxx
@@ -540,7 +540,7 @@ void DrawView::DeleteMarked()
SdrObject* pObj = aList.GetMark(nMark)->GetMarkedSdrObj();
if( pObj && !pObj->IsEmptyPresObj() && pObj->GetUserCall() )
{
- pPage = static_cast< SdPage* >( pObj->GetPage() );
+ pPage = static_cast< SdPage* >( pObj->getSdrPageFromSdrObject() );
if (pPage)
{
PresObjKind ePresObjKind(pPage->GetPresObjKind(pObj));
diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx
index a8e2621a1834..9356034fa8b1 100644
--- a/sd/source/ui/view/drviews4.cxx
+++ b/sd/source/ui/view/drviews4.cxx
@@ -148,7 +148,7 @@ bool DrawViewShell::KeyInput (const KeyEvent& rKEvt, ::sd::Window* pWin)
GetView()->SdrEndTextEdit();
// look for a new candidate, a successor of pOldObj
- SdrObjListIter aIter(*pActualPage, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pActualPage, SdrIterMode::DeepNoGroups);
bool bDidVisitOldObject(false);
while(aIter.IsMore() && !pCandidate)
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 8b69d3616037..0792f0cc281a 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -655,7 +655,7 @@ void DrawViewShell::FuDeleteSelectedObjects()
for (size_t i=0; i < rMarkList.GetMarkCount(); ++i)
{
SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
- SdPage* pPage = static_cast<SdPage*>(pObj->GetPage());
+ SdPage* pPage = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject());
PresObjKind eKind = pPage->GetPresObjKind(pObj);
if (eKind == PRESOBJ_FOOTER || eKind == PRESOBJ_HEADER ||
eKind == PRESOBJ_DATETIME || eKind == PRESOBJ_SLIDENUMBER)
@@ -668,7 +668,7 @@ void DrawViewShell::FuDeleteSelectedObjects()
{
//Unmark object
mpDrawView->MarkObj(pObj, mpDrawView->GetSdrPageView(), true);
- SdPage* pPage = static_cast<SdPage*>(pObj->GetPage());
+ SdPage* pPage = static_cast<SdPage*>(pObj->getSdrPageFromSdrObject());
//remove placeholder from master page
pPage->DestroyDefaultPresObj(pPage->GetPresObjKind(pObj));
}
@@ -1540,8 +1540,8 @@ void DrawViewShell::InsertURLButton(const OUString& rURL, const OUString& rText,
SdrObjFactory::MakeNewObject(
GetView()->getSdrModelFromSdrView(),
SdrInventor::FmForm,
- OBJ_FM_BUTTON,
- mpDrawView->GetSdrPageView()->GetPage()));
+ OBJ_FM_BUTTON)); //,
+ //mpDrawView->GetSdrPageView()->GetPage()));
Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel(), uno::UNO_QUERY_THROW );
Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY_THROW );
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index 3409123b788b..5684e8068fcd 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -195,20 +195,20 @@ drawinglayer::primitive2d::Primitive2DContainer ViewRedirector::createRedirected
SdrObject* pObject = rOriginal.GetViewContact().TryToGetSdrObject();
drawinglayer::primitive2d::Primitive2DContainer xRetval;
- if(pObject && pObject->GetPage())
+ if(pObject && pObject->getSdrPageFromSdrObject())
{
- const bool bDoCreateGeometry(pObject->GetPage()->checkVisibility( rOriginal, rDisplayInfo, true ));
+ const bool bDoCreateGeometry(pObject->getSdrPageFromSdrObject()->checkVisibility( rOriginal, rDisplayInfo, true ));
if(!bDoCreateGeometry && !(( pObject->GetObjInventor() == SdrInventor::Default ) && ( pObject->GetObjIdentifier() == OBJ_PAGE )) )
return xRetval;
PresObjKind eKind(PRESOBJ_NONE);
const bool bSubContentProcessing(rDisplayInfo.GetSubContentActive());
- const bool bIsMasterPageObject(pObject->GetPage()->IsMasterPage());
+ const bool bIsMasterPageObject(pObject->getSdrPageFromSdrObject()->IsMasterPage());
const bool bIsPrinting(rOriginal.GetObjectContact().isOutputToPrinter());
const SdrPageView* pPageView = rOriginal.GetObjectContact().TryToGetSdrPageView();
const SdrPage* pVisualizedPage = GetSdrPageFromXDrawPage(rOriginal.GetObjectContact().getViewInformation2D().getVisualizedPage());
- const SdPage* pObjectsSdPage = dynamic_cast< SdPage* >(pObject->GetPage());
+ const SdPage* pObjectsSdPage = dynamic_cast< SdPage* >(pObject->getSdrPageFromSdrObject());
const bool bIsInsidePageObj(pPageView && pPageView->GetPage() != pVisualizedPage);
// check if we need to draw a placeholder border. Never do it for
@@ -554,7 +554,7 @@ bool View::IsPresObjSelected(bool bOnPage, bool bOnMasterPage, bool bCheckPresOb
if ( pObj && ( bCheckPresObjListOnly || pObj->IsEmptyPresObj() || pObj->GetUserCall() ) )
{
- pPage = static_cast<SdPage*>( pObj->GetPage() );
+ pPage = static_cast<SdPage*>( pObj->getSdrPageFromSdrObject() );
bMasterPage = pPage && pPage->IsMasterPage();
if ( (bMasterPage && bOnMasterPage) || (!bMasterPage && bOnPage) )
@@ -652,7 +652,7 @@ bool View::SdrBeginTextEdit(
SdrOutliner* pOutl, OutlinerView* pGivenOutlinerView,
bool bDontDeleteOutliner, bool bOnlyOneView, bool bGrabFocus )
{
- SdrPage* pPage = pObj ? pObj->GetPage() : nullptr;
+ SdrPage* pPage = pObj ? pObj->getSdrPageFromSdrObject() : nullptr;
bool bMasterPage = pPage && pPage->IsMasterPage();
GetViewShell()->GetViewShellBase().GetEventMultiplexer()->MultiplexEvent(
@@ -716,7 +716,7 @@ bool View::SdrBeginTextEdit(
{
::Outliner* pOL = GetTextEditOutliner();
- if( pObj && pObj->GetPage() )
+ if( pObj && pObj->getSdrPageFromSdrObject() )
{
Color aBackground;
if( pObj->GetObjInventor() == SdrInventor::Default && pObj->GetObjIdentifier() == OBJ_TABLE )
@@ -725,7 +725,7 @@ bool View::SdrBeginTextEdit(
}
else
{
- aBackground = pObj->GetPage()->GetPageBackgroundColor(pPV);
+ aBackground = pObj->getSdrPageFromSdrObject()->GetPageBackgroundColor(pPV);
}
if (pOL != nullptr)
pOL->SetBackgroundColor( aBackground );
@@ -741,7 +741,7 @@ bool View::SdrBeginTextEdit(
if (bMasterPage && bReturn && pOutl)
{
const SdrTextObj* pTextObj = pOutl->GetTextObj();
- const SdPage* pSdPage = pTextObj ? static_cast<const SdPage*>(pTextObj->GetPage()) : nullptr;
+ const SdPage* pSdPage = pTextObj ? static_cast<const SdPage*>(pTextObj->getSdrPageFromSdrObject()) : nullptr;
const PresObjKind eKind = pSdPage ? pSdPage->GetPresObjKind(const_cast<SdrTextObj*>(pTextObj)) : PRESOBJ_NONE;
switch (eKind)
{
@@ -785,7 +785,7 @@ SdrEndTextEditKind View::SdrEndTextEdit(bool bDontDeleteReally)
SdrTextObj* pObj = xObj.get();
if( pObj && pObj->HasText() )
{
- SdrPage* pPage = pObj->GetPage();
+ SdrPage* pPage = pObj->getSdrPageFromSdrObject();
if( !pPage || !pPage->IsMasterPage() )
pObj->SetEmptyPresObj( false );
}
@@ -806,7 +806,7 @@ SdrEndTextEditKind View::SdrEndTextEdit(bool bDontDeleteReally)
}
- SdPage* pPage = dynamic_cast< SdPage* >( xObj->GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( xObj->getSdrPageFromSdrObject() );
if( pPage )
pPage->onEndTextEdit( xObj.get() );
}
@@ -824,7 +824,7 @@ bool View::RestoreDefaultText( SdrTextObj* pTextObj )
{
if( !pTextObj->HasText() )
{
- SdPage* pPage = dynamic_cast< SdPage* >( pTextObj->GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( pTextObj->getSdrPageFromSdrObject() );
if(pPage)
{
@@ -1074,7 +1074,7 @@ IMPL_LINK( View, OnParagraphInsertedHdl, ::Outliner::ParagraphHdlParam, aParam,
if( aParam.pPara && pObj )
{
- SdPage* pPage = dynamic_cast< SdPage* >( pObj->GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( pObj->getSdrPageFromSdrObject() );
if( pPage )
pPage->onParagraphInserted( aParam.pOutliner, aParam.pPara, pObj );
}
@@ -1089,7 +1089,7 @@ IMPL_LINK( View, OnParagraphRemovingHdl, ::Outliner::ParagraphHdlParam, aParam,
if( aParam.pPara && pObj )
{
- SdPage* pPage = dynamic_cast< SdPage* >( pObj->GetPage() );
+ SdPage* pPage = dynamic_cast< SdPage* >( pObj->getSdrPageFromSdrObject() );
if( pPage )
pPage->onParagraphRemoving( aParam.pOutliner, aParam.pPara, pObj );
}
@@ -1207,10 +1207,10 @@ void View::OnEndPasteOrDrop( PasteOrDropInfos* pInfo )
/* Style Sheet handling */
SdrTextObj* pTextObj = GetTextEditObject();
SdrOutliner* pOutliner = GetTextEditOutliner();
- if( !pOutliner || !pTextObj || !pTextObj->GetPage() )
+ if( !pOutliner || !pTextObj || !pTextObj->getSdrPageFromSdrObject() )
return;
- SdPage* pPage = static_cast< SdPage* >( pTextObj->GetPage() );
+ SdPage* pPage = static_cast< SdPage* >( pTextObj->getSdrPageFromSdrObject() );
const PresObjKind eKind = pPage->GetPresObjKind(pTextObj);
// outline kinds are taken care of in Outliner::ImplSetLevelDependentStyleSheet
diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx
index 29c3c2bc24a8..45905d242cf9 100644
--- a/sd/source/ui/view/sdview2.cxx
+++ b/sd/source/ui/view/sdview2.cxx
@@ -275,7 +275,7 @@ void View::DoPaste (::sd::Window* pWindow)
const_cast< OutlinerView* >(pOLV)->PasteSpecial();
SdrObject* pObj = GetTextEditObject();
- SdPage* pPage = static_cast<SdPage*>( pObj ? pObj->GetPage() : nullptr );
+ SdPage* pPage = static_cast<SdPage*>( pObj ? pObj->getSdrPageFromSdrObject() : nullptr );
::Outliner* pOutliner = pOLV->GetOutliner();
if( pOutliner)
@@ -405,10 +405,10 @@ void View::DragFinished( sal_Int8 nDropAction )
SdrMark* pM=mpDragSrcMarkList->GetMark(nm);
SdrObject* pObj=pM->GetMarkedSdrObj();
- if( pObj && pObj->GetPage() )
+ if( pObj && pObj->getSdrPageFromSdrObject() )
{
const size_t nOrdNum = pObj->GetOrdNumDirect();
- SdrObject* pChkObj = pObj->GetPage()->RemoveObject(nOrdNum);
+ SdrObject* pChkObj = pObj->getSdrPageFromSdrObject()->RemoveObject(nOrdNum);
DBG_ASSERT(pChkObj==pObj,"pChkObj!=pObj in RemoveObject()");
}
}
@@ -538,7 +538,7 @@ sal_Int8 View::AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTarge
if (pPickObj && (pPickObj->IsEmptyPresObj() || pPickObj->GetUserCall()))
{
- SdPage* pPage = static_cast<SdPage*>( pPickObj->GetPage() );
+ SdPage* pPage = static_cast<SdPage*>( pPickObj->getSdrPageFromSdrObject() );
if( pPage && pPage->IsMasterPage() )
bIsPresTarget = pPage->IsPresObj( pPickObj );
diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index 4100fe9dfacc..634e59e7ce93 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -646,7 +646,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
SdDrawDocument* pWorkModel = const_cast<SdDrawDocument*>(pOwnData->GetWorkDocument());
SdPage* pWorkPage = pWorkModel->GetSdPage( 0, PageKind::Standard );
- pWorkPage->SetRectsDirty();
+ pWorkPage->SetSdrObjListRectsDirty();
// #i120393# Clipboard data uses full object geometry range
const Size aSize( pWorkPage->GetAllObjBoundRect().GetSize() );
@@ -816,7 +816,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
{
SdrPage* pWorkPage = pModel->GetSdPage( 0, PageKind::Standard );
- pWorkPage->SetRectsDirty();
+ pWorkPage->SetSdrObjListRectsDirty();
if( pOwnData )
{
@@ -890,7 +890,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
SdDrawDocument* pModel = xDocShRef->GetDoc();
SdPage* pWorkPage = pModel->GetSdPage( 0, PageKind::Standard );
- pWorkPage->SetRectsDirty();
+ pWorkPage->SetSdrObjListRectsDirty();
if( pOwnData )
{
@@ -1228,7 +1228,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
pWorkModel->GetSdPage( 0, PageKind::Standard ) :
pWorkModel->GetPage( 0 ) );
- pWorkPage->SetRectsDirty();
+ pWorkPage->SetSdrObjListRectsDirty();
// #i120393# Clipboard data uses full object geometry range
const Size aSize( pWorkPage->GetAllObjBoundRect().GetSize() );
@@ -1260,7 +1260,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
pWorkModel->GetSdPage( 0, PageKind::Standard ) :
pWorkModel->GetPage( 0 ) );
- pWorkPage->SetRectsDirty();
+ pWorkPage->SetSdrObjListRectsDirty();
// #i120393# Clipboard data uses full object geometry range
const Size aSize( pWorkPage->GetAllObjBoundRect().GetSize() );
@@ -1309,7 +1309,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
pWorkModel->GetSdPage( 0, PageKind::Standard ) :
pWorkModel->GetPage( 0 ) );
- pWorkPage->SetRectsDirty();
+ pWorkPage->SetSdrObjListRectsDirty();
// #i120393# Clipboard data uses full object geometry range
const Size aSize( pWorkPage->GetAllObjBoundRect().GetSize() );
diff --git a/sd/source/ui/view/sdview4.cxx b/sd/source/ui/view/sdview4.cxx
index 9d1cb05ed000..fa9a48ea1a2c 100644
--- a/sd/source/ui/view/sdview4.cxx
+++ b/sd/source/ui/view/sdview4.cxx
@@ -106,7 +106,7 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
if( IsUndoEnabled() )
BegUndo(SdResId(STR_INSERTGRAPHIC));
- SdPage* pPage = static_cast<SdPage*>( pPickObj->GetPage() );
+ SdPage* pPage = static_cast<SdPage*>( pPickObj->getSdrPageFromSdrObject() );
if( bIsGraphic )
{
@@ -214,7 +214,7 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
if( ( mnAction & DND_ACTION_MOVE ) && pPickObj && (pPickObj->IsEmptyPresObj() || pPickObj->GetUserCall()) )
{
- SdPage* pP = static_cast< SdPage* >( pPickObj->GetPage() );
+ SdPage* pP = static_cast< SdPage* >( pPickObj->getSdrPageFromSdrObject() );
if ( pP && pP->IsMasterPage() )
bIsPresTarget = pP->IsPresObj(pPickObj);
@@ -342,7 +342,7 @@ SdrMediaObj* View::InsertMediaObj( const OUString& rMediaURL, const OUString& rM
bool bIsPres = false;
if( pPickObj )
{
- SdPage* pPage = static_cast< SdPage* >(pPickObj->GetPage());
+ SdPage* pPage = static_cast< SdPage* >(pPickObj->getSdrPageFromSdrObject());
bIsPres = pPage && pPage->IsPresObj(pPickObj);
if( bIsPres )
{
diff --git a/svx/inc/sdr/properties/attributeproperties.hxx b/svx/inc/sdr/properties/attributeproperties.hxx
index 138d7a20b900..aa02c9484696 100644
--- a/svx/inc/sdr/properties/attributeproperties.hxx
+++ b/svx/inc/sdr/properties/attributeproperties.hxx
@@ -31,9 +31,6 @@ namespace sdr
{
class AttributeProperties : public DefaultProperties, public SfxListener, public svl::StyleSheetUser
{
- // get the correct (#119287#) default SfyStyleSheet from SdrObject's SdrModel
- SfxStyleSheet* ImpGetDefaultStyleSheet() const;
-
// core to set parent at SfxItemSet and to execute the hard attribute computations
void ImpSetParentAtSfxItemSet(bool bDontRemoveHardAttr);
diff --git a/svx/inc/sdr/properties/graphicproperties.hxx b/svx/inc/sdr/properties/graphicproperties.hxx
index 7f81ebd3d5dc..d8744dcb645b 100644
--- a/svx/inc/sdr/properties/graphicproperties.hxx
+++ b/svx/inc/sdr/properties/graphicproperties.hxx
@@ -30,6 +30,9 @@ namespace sdr
class GraphicProperties : public RectangleProperties
{
protected:
+ // apply the correct SfyStyleSheet from SdrObject's SdrModel
+ virtual void applyDefaultStyleSheetFromSdrModel() override;
+
// create a new itemset
virtual std::unique_ptr<SfxItemSet> CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
diff --git a/svx/inc/sdr/properties/oleproperties.hxx b/svx/inc/sdr/properties/oleproperties.hxx
index 3c932e3a6fe4..2aa081d6658a 100644
--- a/svx/inc/sdr/properties/oleproperties.hxx
+++ b/svx/inc/sdr/properties/oleproperties.hxx
@@ -30,6 +30,9 @@ namespace sdr
class OleProperties : public RectangleProperties
{
protected:
+ // apply the correct SfyStyleSheet from SdrObject's SdrModel
+ virtual void applyDefaultStyleSheetFromSdrModel() override;
+
public:
// basic constructor
explicit OleProperties(SdrObject& rObj);
diff --git a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
index 003a43ff7d20..2a62c0ac1daf 100644
--- a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
@@ -255,8 +255,6 @@ SdrObject* EnhancedCustomShapeEngine::ImplForceGroupWithText(
pRenderedShape = new SdrObjGroup(rSdrObjCustomShape.getSdrModelFromSdrObject());
static_cast<SdrObjGroup*>(pRenderedShape)->GetSubList()->NbcInsertObject( pTmp );
}
-
- pRenderedShape->SetPage(rSdrObjCustomShape.GetPage());
}
}
diff --git a/svx/source/engine3d/helperhittest3d.cxx b/svx/source/engine3d/helperhittest3d.cxx
index 09dbdf45cd8d..db71e75da574 100644
--- a/svx/source/engine3d/helperhittest3d.cxx
+++ b/svx/source/engine3d/helperhittest3d.cxx
@@ -162,7 +162,7 @@ void getAllHit3DObjectsSortedFrontToBack(
o_rResult.clear();
SdrObjList* pList = rScene.GetSubList();
- if(pList && pList->GetObjCount())
+ if(nullptr != pList && 0 != pList->GetObjCount())
{
// prepare relative HitPoint. To do so, get the VC of the 3DScene and from there
// the Scene's 2D transformation. Multiplying with the inverse transformation
@@ -175,7 +175,7 @@ void getAllHit3DObjectsSortedFrontToBack(
// check if test point is inside scene's area at all
if(aRelativePoint.getX() >= 0.0 && aRelativePoint.getX() <= 1.0 && aRelativePoint.getY() >= 0.0 && aRelativePoint.getY() <= 1.0)
{
- SdrObjListIter aIterator(*pList, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIterator(pList, SdrIterMode::DeepNoGroups);
::std::vector< ImplPairDephAndObject > aDepthAndObjectResults;
const uno::Sequence< beans::PropertyValue > aEmptyParameters;
drawinglayer::geometry::ViewInformation3D aViewInfo3D(aEmptyParameters);
diff --git a/svx/source/engine3d/obj3d.cxx b/svx/source/engine3d/obj3d.cxx
index 522bf6de5e7e..670dbb9ccd04 100644
--- a/svx/source/engine3d/obj3d.cxx
+++ b/svx/source/engine3d/obj3d.cxx
@@ -285,9 +285,9 @@ E3dObject* E3dObject::GetParentObj() const
{
E3dObject* pRetval = nullptr;
- if(getParentOfSdrObject() && getParentOfSdrObject()->GetOwnerObj())
+ if(getParentOfSdrObject())
{
- pRetval = dynamic_cast<E3dObject*>(getParentOfSdrObject()->GetOwnerObj());
+ pRetval = dynamic_cast< E3dObject* >(getParentOfSdrObject()->getSdrObjectFromSdrObjList());
}
return pRetval;
@@ -677,11 +677,9 @@ basegfx::B2DPolyPolygon E3dCompoundObject::TransformToScreenCoor(const basegfx::
bool E3dCompoundObject::IsAOrdNumRemapCandidate(E3dScene*& prScene) const
{
- if(getParentOfSdrObject()
- && getParentOfSdrObject()->GetOwnerObj()
- && dynamic_cast<const E3dObject*>(getParentOfSdrObject()->GetOwnerObj()))
+ if(getParentOfSdrObject() && getParentOfSdrObject()->getSdrObjectFromSdrObjList())
{
- prScene = static_cast<E3dScene*>(getParentOfSdrObject()->GetOwnerObj());
+ prScene = static_cast< E3dScene* >(getParentOfSdrObject()->getSdrObjectFromSdrObjList());
return true;
}
diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
index 01fa06cc1b37..465cdbd836fa 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -178,9 +178,6 @@ E3dScene::E3dScene(SdrModel& rSdrModel)
bDrawOnlySelected(false),
mbSkipSettingDirty(false)
{
- SetOwnerObj(this);
- SetListKind(SdrObjListKind::GroupObj);
-
// Set defaults
SetDefaultAttributes();
}
@@ -218,6 +215,26 @@ E3dScene::~E3dScene()
ImpCleanup3DDepthMapper();
}
+SdrPage* E3dScene::getSdrPageFromSdrObjList() const
+{
+ return getSdrPageFromSdrObject();
+}
+
+SdrObject* E3dScene::getSdrObjectFromSdrObjList() const
+{
+ return const_cast< E3dScene* >(this);
+}
+
+SdrModel& E3dScene::getSdrModelFromSdrObjList() const
+{
+ return getSdrModelFromSdrObject();
+}
+
+SdrObjList* E3dScene::getChildrenOfSdrObject() const
+{
+ return const_cast< E3dScene* >(this);
+}
+
basegfx::B2DPolyPolygon E3dScene::TakeXorPoly() const
{
const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(GetViewContact());
@@ -467,14 +484,13 @@ void E3dScene::SetAllSceneRectsDirty()
void E3dScene::RebuildLists()
{
// first delete
- SdrLayerID nCurrLayerID = GetLayer();
-
- SdrObjListIter a3DIterator(static_cast< SdrObjList& >(*this), SdrIterMode::Flat);
+ const SdrLayerID nCurrLayerID(GetLayer());
+ SdrObjListIter a3DIterator(GetSubList(), SdrIterMode::Flat);
// then examine all the objects in the scene
- while ( a3DIterator.IsMore() )
+ while(a3DIterator.IsMore())
{
- E3dObject* p3DObj = static_cast<E3dObject*>(a3DIterator.Next());
+ E3dObject* p3DObj(static_cast< E3dObject* >(a3DIterator.Next()));
p3DObj->NbcSetLayer(nCurrLayerID);
NewObjectInserted(p3DObj);
}
@@ -657,7 +673,7 @@ void E3dScene::RecalcSnapRect()
bool E3dScene::IsBreakObjPossible()
{
// Break scene, if all members are able to break
- SdrObjListIter a3DIterator(static_cast< SdrObjList& >(*this), SdrIterMode::DeepWithGroups);
+ SdrObjListIter a3DIterator(GetSubList(), SdrIterMode::DeepWithGroups);
while ( a3DIterator.IsMore() )
{
@@ -734,11 +750,8 @@ void E3dScene::SetSelected(bool bNew)
void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
{
- // Get owner
- DBG_ASSERT(dynamic_cast<const E3dObject*>(GetOwnerObj()), "Insert 3D object in parent != 3DObject");
-
// Is it even a 3D object?
- if(pObj && nullptr != dynamic_cast< const E3dObject* >(pObj))
+ if(nullptr != dynamic_cast< const E3dObject* >(pObj))
{
// Normal 3D object, insert means
// call parent
@@ -747,14 +760,12 @@ void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
else
{
// No 3D object, inserted a page in place in a scene ...
- GetOwnerObj()->GetPage()->InsertObject(pObj, nPos);
+ getSdrObjectFromSdrObjList()->getSdrPageFromSdrObject()->InsertObject(pObj, nPos);
}
}
void E3dScene::InsertObject(SdrObject* pObj, size_t nPos)
{
- OSL_ENSURE(dynamic_cast<const E3dObject*>(GetOwnerObj()), "Insert 3D object in non-3D Parent");
-
// call parent
SdrObjList::InsertObject(pObj, nPos);
@@ -763,8 +774,6 @@ void E3dScene::InsertObject(SdrObject* pObj, size_t nPos)
SdrObject* E3dScene::NbcRemoveObject(size_t nObjNum)
{
- DBG_ASSERT(dynamic_cast<const E3dObject*>(GetOwnerObj()), "Remove 3D object from Parent != 3DObject");
-
// call parent
SdrObject* pRetval = SdrObjList::NbcRemoveObject(nObjNum);
@@ -775,8 +784,6 @@ SdrObject* E3dScene::NbcRemoveObject(size_t nObjNum)
SdrObject* E3dScene::RemoveObject(size_t nObjNum)
{
- OSL_ENSURE(dynamic_cast<const E3dObject*>(GetOwnerObj()), "3D object is removed from non-3D Parent");
-
// call parent
SdrObject* pRetval = SdrObjList::RemoveObject(nObjNum);
@@ -785,10 +792,10 @@ SdrObject* E3dScene::RemoveObject(size_t nObjNum)
return pRetval;
}
-void E3dScene::SetRectsDirty(bool bNotMyself)
+void E3dScene::SetRectsDirty(bool bNotMyself, bool bRecursive)
{
// call parent
- E3dObject::SetRectsDirty(bNotMyself);
+ E3dObject::SetRectsDirty(bNotMyself, bRecursive);
for(size_t a = 0; a < GetObjCount(); ++a)
{
@@ -796,7 +803,7 @@ void E3dScene::SetRectsDirty(bool bNotMyself)
if(pCandidate)
{
- pCandidate->SetRectsDirty(bNotMyself);
+ pCandidate->SetRectsDirty(bNotMyself, false);
}
}
}
@@ -817,21 +824,27 @@ void E3dScene::NbcSetLayer(SdrLayerID nLayer)
}
}
-void E3dScene::setParentOfSdrObject(SdrObjList* pNewObjList)
+void E3dScene::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- // call parent
- E3dObject::setParentOfSdrObject(pNewObjList);
-
- SetUpList(pNewObjList);
-}
+ if(pOldPage != pNewPage)
+ {
+ // call parent
+ E3dObject::handlePageChange(pOldPage, pNewPage);
-void E3dScene::SetPage(SdrPage* pNewPage)
-{
- // call parent
- E3dObject::SetPage(pNewPage);
+ for(size_t a(0); a < GetObjCount(); a++)
+ {
+ E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
- // set at SdrObjList
- SdrObjList::SetPage(pNewPage);
+ if(pCandidate)
+ {
+ pCandidate->handlePageChange(pOldPage, pNewPage);
+ }
+ else
+ {
+ OSL_ENSURE(false, "E3dScene::handlePageChange invalid object list (!)");
+ }
+ }
+ }
}
SdrObjList* E3dScene::GetSubList() const
@@ -842,9 +855,7 @@ SdrObjList* E3dScene::GetSubList() const
void E3dScene::Insert3DObj(E3dObject* p3DObj)
{
DBG_ASSERT(p3DObj, "Insert3DObj with NULL-pointer!");
- SdrPage* pPg = pPage;
InsertObject(p3DObj);
- pPage = pPg;
InvalidateBoundVolume();
NewObjectInserted(p3DObj);
StructureChanged();
@@ -856,10 +867,7 @@ void E3dScene::Remove3DObj(E3dObject const * p3DObj)
if(p3DObj->GetParentObj() == this)
{
- SdrPage* pPg = pPage;
RemoveObject(p3DObj->GetOrdNum());
- pPage = pPg;
-
InvalidateBoundVolume();
StructureChanged();
}
diff --git a/svx/source/engine3d/view3d.cxx b/svx/source/engine3d/view3d.cxx
index 7431cb2e875a..8be7aae2abe4 100644
--- a/svx/source/engine3d/view3d.cxx
+++ b/svx/source/engine3d/view3d.cxx
@@ -456,10 +456,10 @@ bool E3dView::Paste(
return false;
// Get owner of the list
- SdrObject* pOwner = pDstList->GetOwnerObj();
- if(pOwner && dynamic_cast< const E3dScene* >(pOwner) != nullptr)
+ E3dScene* pDstScene(dynamic_cast< E3dScene* >(pDstList->getSdrObjectFromSdrObjList()));
+
+ if(nullptr != pDstScene)
{
- E3dScene* pDstScene = static_cast<E3dScene*>(pOwner);
BegUndo(SvxResId(RID_SVX_3D_UNDO_EXCHANGE_PASTE));
// Copy all objects from E3dScenes and insert them directly
@@ -581,7 +581,6 @@ bool E3dView::ImpCloneAll3DObjectsToDestScene(E3dScene const * pSrcScene, E3dSce
pNewCompoundObj->SetTransform(aModifyingTransform * aNewObjectTrans);
// fill and insert new object
- pNewCompoundObj->SetPage(pDstScene->E3dObject::GetPage());
pNewCompoundObj->NbcSetLayer(pCompoundObj->GetLayer());
pNewCompoundObj->NbcSetStyleSheet(pCompoundObj->GetStyleSheet(), true);
pDstScene->Insert3DObj(pNewCompoundObj);
@@ -655,7 +654,7 @@ void E3dView::ImpChangeSomeAttributesFor3DConversion(SdrObject* pObj)
if(rTextColorItem.GetValue() == COL_BLACK)
{
//For black text objects, the color set to gray
- if(pObj->GetPage())
+ if(pObj->getSdrPageFromSdrObject())
{
// if black is only default attribute from
// pattern set it hard so that it is used in undo.
@@ -685,8 +684,11 @@ void E3dView::ImpChangeSomeAttributesFor3DConversion2(SdrObject* pObj)
&& !nLineWidth
&& eFillStyle != drawing::FillStyle_NONE)
{
- if(pObj->GetPage() && GetModel()->IsUndoEnabled() )
+ if(pObj->getSdrPageFromSdrObject() && GetModel()->IsUndoEnabled() )
+ {
AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
+ }
+
pObj->SetMergedItem(XLineStyleItem(drawing::LineStyle_NONE));
pObj->SetMergedItem(XLineWidthItem(0));
}
@@ -1035,7 +1037,7 @@ void E3dView::DoDepthArrange(E3dScene const * pScene, double fDepth)
if(pScene && pScene->GetSubList() && pScene->GetSubList()->GetObjCount() > 1)
{
SdrObjList* pSubList = pScene->GetSubList();
- SdrObjListIter aIter(*pSubList, SdrIterMode::Flat);
+ SdrObjListIter aIter(pSubList, SdrIterMode::Flat);
E3dDepthLayer* pBaseLayer = nullptr;
E3dDepthLayer* pLayer = nullptr;
sal_Int32 nNumLayers = 0;
@@ -1550,7 +1552,7 @@ void E3dView::BreakSingle3DObj(E3dObject* pObj)
if(dynamic_cast< const E3dScene* >(pObj) != nullptr)
{
SdrObjList* pSubList = pObj->GetSubList();
- SdrObjListIter aIter(*pSubList, SdrIterMode::Flat);
+ SdrObjListIter aIter(pSubList, SdrIterMode::Flat);
while(aIter.IsMore())
{
diff --git a/svx/source/form/fmobj.cxx b/svx/source/form/fmobj.cxx
index 8b3ee18c806f..cb9b4ca44c29 100644
--- a/svx/source/form/fmobj.cxx
+++ b/svx/source/form/fmobj.cxx
@@ -164,26 +164,21 @@ void FmFormObj::impl_isolateControlModel_nothrow()
}
-void FmFormObj::SetPage(SdrPage* _pNewPage)
+void FmFormObj::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- if ( GetPage() == _pNewPage )
- {
- SdrUnoObj::SetPage(_pNewPage);
- return;
- }
-
- FmFormPage* pOldFormPage = dynamic_cast<FmFormPage*>( GetPage() );
+ FmFormPage* pOldFormPage(dynamic_cast< FmFormPage* >(getSdrPageFromSdrObject()));
if ( pOldFormPage )
pOldFormPage->GetImpl().formObjectRemoved( *this );
- FmFormPage* pNewFormPage = dynamic_cast<FmFormPage*>( _pNewPage );
+ FmFormPage* pNewFormPage = dynamic_cast<FmFormPage*>( pNewPage );
if ( !pNewFormPage )
- { // Maybe it makes sense to create an environment history here : if somebody set's our page to NULL, and we have a valid page before,
+ {
+ // Maybe it makes sense to create an environment history here : if somebody set's our page to NULL, and we have a valid page before,
// me may want to remember our place within the old page. For this we could create a new m_xEnvironmentHistory to store it.
// So the next SetPage with a valid new page would restore that environment within the new page.
// But for the original Bug (#57300#) we don't need that, so I omit it here. Maybe this will be implemented later.
impl_isolateControlModel_nothrow();
- SdrUnoObj::SetPage(_pNewPage);
+ SdrUnoObj::handlePageChange(pOldPage, pNewPage);
return;
}
@@ -195,7 +190,7 @@ void FmFormObj::SetPage(SdrPage* _pNewPage)
// do we have a history ? (from :Clone)
if ( m_xEnvironmentHistory.is() )
{
- // the element in m_xEnvironmentHistory which is equivalent to my new parent (which (perhaps) has to be created within _pNewPage->GetForms)
+ // the element in m_xEnvironmentHistory which is equivalent to my new parent (which (perhaps) has to be created within pNewPage->GetForms)
// is the right-most element in the tree.
Reference< XIndexContainer > xRightMostLeaf( m_xEnvironmentHistory, UNO_QUERY_THROW );
try
@@ -268,7 +263,7 @@ void FmFormObj::SetPage(SdrPage* _pNewPage)
}
// now set the page
- SdrUnoObj::SetPage(_pNewPage);
+ SdrUnoObj::handlePageChange(pOldPage, pNewPage);
// place my model within the new parent container
if (xNewParent.is())
@@ -284,6 +279,7 @@ void FmFormObj::SetPage(SdrPage* _pNewPage)
if (nPos > -1)
xOldParent->removeByIndex(nPos);
}
+
// and insert into the new container
xNewParent->insertByIndex(xNewParent->getCount(), makeAny(xMeAsFormComp));
@@ -614,7 +610,7 @@ void FmFormObj::SetUnoControlModel( const Reference< css::awt::XControlModel >&
{
SdrUnoObj::SetUnoControlModel( _rxModel );
- FmFormPage* pFormPage = dynamic_cast<FmFormPage*>( GetPage() );
+ FmFormPage* pFormPage(dynamic_cast< FmFormPage* >(getSdrPageFromSdrObject()));
if ( pFormPage )
pFormPage->GetImpl().formModelAssigned( *this );
@@ -627,10 +623,10 @@ bool FmFormObj::EndCreate( SdrDragStat& rStat, SdrCreateCmd eCmd )
bool bResult = SdrUnoObj::EndCreate(rStat, eCmd);
if ( bResult && SdrCreateCmd::ForceEnd == eCmd && rStat.GetView() )
{
- if ( pPage )
- {
- FmFormPage& rPage = dynamic_cast< FmFormPage& >( *pPage );
+ FmFormPage* pFormPage(dynamic_cast< FmFormPage* >(getSdrPageFromSdrObject()));
+ if (nullptr != pFormPage)
+ {
try
{
Reference< XFormComponent > xContent( xUnoControlModel, UNO_QUERY_THROW );
@@ -640,7 +636,7 @@ bool FmFormObj::EndCreate( SdrDragStat& rStat, SdrCreateCmd eCmd )
if ( !xParentForm.is() )
{ // model is not yet part of a form component hierarchy
- xParentForm.set( rPage.GetImpl().findPlaceInFormComponentHierarchy( xContent ), UNO_SET_THROW );
+ xParentForm.set( pFormPage->GetImpl().findPlaceInFormComponentHierarchy( xContent ), UNO_SET_THROW );
xFormToInsertInto.set( xParentForm, UNO_QUERY_THROW );
}
diff --git a/svx/source/form/fmpgeimp.cxx b/svx/source/form/fmpgeimp.cxx
index d72e39af505f..a6e23f277e3a 100644
--- a/svx/source/form/fmpgeimp.cxx
+++ b/svx/source/form/fmpgeimp.cxx
@@ -166,8 +166,8 @@ void FmFormPageImpl::initFrom( FmFormPageImpl& i_foreignImpl )
aVisitor.process( FormComponentPair( xForeignForms, m_xForms ), aAssignmentProcessor );
// assign the cloned models to their SdrObjects
- SdrObjListIter aForeignIter( i_foreignImpl.m_rPage );
- SdrObjListIter aOwnIter( m_rPage );
+ SdrObjListIter aForeignIter( &i_foreignImpl.m_rPage );
+ SdrObjListIter aOwnIter( &m_rPage );
OSL_ENSURE( aForeignIter.IsMore() == aOwnIter.IsMore(), "FmFormPageImpl::FmFormPageImpl: inconsistent number of objects (1)!" );
while ( aForeignIter.IsMore() && aOwnIter.IsMore() )
@@ -278,7 +278,7 @@ Reference< XMap > FmFormPageImpl::impl_createControlShapeMap_nothrow()
::cppu::UnoType< XControlShape >::get()
).get(), UNO_SET_THROW );
- SdrObjListIter aPageIter( m_rPage );
+ SdrObjListIter aPageIter( &m_rPage );
while ( aPageIter.IsMore() )
{
// only FmFormObjs are what we're interested in
diff --git a/svx/source/form/fmshell.cxx b/svx/source/form/fmshell.cxx
index d23f5f821743..4a77bfc43496 100644
--- a/svx/source/form/fmshell.cxx
+++ b/svx/source/form/fmshell.cxx
@@ -1274,7 +1274,7 @@ namespace
{
SdrUnoObj* lcl_findUnoObject( const SdrObjList& _rObjList, const Reference< XControlModel >& _rxModel )
{
- SdrObjListIter aIter( _rObjList );
+ SdrObjListIter aIter( &_rObjList );
while ( aIter.IsMore() )
{
SdrObject* pObject = aIter.Next();
diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 560b2fa5c70b..606d5039d8f1 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -288,7 +288,7 @@ namespace
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;
}
@@ -577,7 +577,7 @@ bool isControlList(const SdrMarkList& rMarkList)
{
if (pObj->IsGroupObject())
{
- SdrObjListIter aIter(*pObj->GetSubList());
+ SdrObjListIter aIter(pObj->GetSubList());
while (aIter.IsMore() && bControlList)
{
bControlList = SdrInventor::FmForm == aIter.Next()->GetObjInventor();
@@ -1100,7 +1100,7 @@ bool FmXFormShell::executeControlConversionSlot_Lock(const Reference<XFormCompon
Reference< XInterface > xNormalizedObject( _rxObject, UNO_QUERY );
FmFormObj* pFormObject = nullptr;
- SdrObjListIter aPageIter( *pFormPage );
+ SdrObjListIter aPageIter( pFormPage );
while ( aPageIter.IsMore() )
{
SdrObject* pCurrent = aPageIter.Next();
@@ -2349,7 +2349,7 @@ IMPL_LINK(FmXFormShell, OnSearchContextRequest_Lock, FmSearchContext&, rfmscCont
// Search all SdrControls of this page...
OUString sControlSource, aName;
- SdrObjListIter aPageIter( *pCurrentPage );
+ SdrObjListIter aPageIter( pCurrentPage );
while ( aPageIter.IsMore() )
{
SdrObject* pCurrent = aPageIter.Next();
diff --git a/svx/source/form/fmundo.cxx b/svx/source/form/fmundo.cxx
index b29e55358a60..5a7ce3fe8813 100644
--- a/svx/source/form/fmundo.cxx
+++ b/svx/source/form/fmundo.cxx
@@ -340,7 +340,7 @@ void FmXUndoEnvironment::Inserted(SdrObject* pObj)
}
else if (pObj->IsGroupObject())
{
- SdrObjListIter aIter(*pObj->GetSubList());
+ SdrObjListIter aIter(pObj->GetSubList());
while ( aIter.IsMore() )
Inserted( aIter.Next() );
}
@@ -392,7 +392,7 @@ void FmXUndoEnvironment::Inserted(FmFormObj* pObj)
// is the control still assigned to a form
Reference< XInterface > xModel(pObj->GetUnoControlModel(), UNO_QUERY);
Reference< XFormComponent > xContent(xModel, UNO_QUERY);
- if (xContent.is() && pObj->GetPage())
+ if (xContent.is() && pObj->getSdrPageFromSdrObject())
{
// if the component doesn't belong to a form, yet, find one to insert into
if (!xContent->getParent().is())
@@ -401,7 +401,7 @@ void FmXUndoEnvironment::Inserted(FmFormObj* pObj)
{
Reference< XIndexContainer > xObjectParent = pObj->GetOriginalParent();
- FmFormPage& rPage = dynamic_cast< FmFormPage& >( *pObj->GetPage() );
+ FmFormPage& rPage(dynamic_cast< FmFormPage& >( *pObj->getSdrPageFromSdrObject()));
Reference< XIndexAccess > xForms( rPage.GetForms(), UNO_QUERY_THROW );
Reference< XIndexContainer > xNewParent;
@@ -454,7 +454,7 @@ void FmXUndoEnvironment::Removed(SdrObject* pObj)
}
else if (pObj->IsGroupObject())
{
- SdrObjListIter aIter(*pObj->GetSubList());
+ SdrObjListIter aIter(pObj->GetSubList());
while ( aIter.IsMore() )
Removed( aIter.Next() );
}
diff --git a/svx/source/form/fmview.cxx b/svx/source/form/fmview.cxx
index 6acd8b890e2d..1d9aadc0ab90 100644
--- a/svx/source/form/fmview.cxx
+++ b/svx/source/form/fmview.cxx
@@ -273,7 +273,7 @@ void FmFormView::ChangeDesignMode(bool bDesign)
// redraw UNO objects
if ( GetSdrPageView() )
{
- SdrObjListIter aIter(*pCurPage);
+ SdrObjListIter aIter(pCurPage);
while( aIter.IsMore() )
{
SdrObject* pObj = aIter.Next();
diff --git a/svx/source/form/fmvwimp.cxx b/svx/source/form/fmvwimp.cxx
index 9547171a9ef6..f31659ea3a40 100644
--- a/svx/source/form/fmvwimp.cxx
+++ b/svx/source/form/fmvwimp.cxx
@@ -885,7 +885,7 @@ namespace
{
Reference< XInterface > xNormalizedForm( _rxForm, UNO_QUERY_THROW );
- SdrObjListIter aSdrObjectLoop( _rPage, SdrIterMode::DeepNoGroups );
+ SdrObjListIter aSdrObjectLoop( &_rPage, SdrIterMode::DeepNoGroups );
while ( aSdrObjectLoop.IsMore() )
{
FmFormObj* pFormObject = FmFormObj::GetFormObject( aSdrObjectLoop.Next() );
@@ -1539,7 +1539,7 @@ bool FmXFormView::createControlLabelPair( OutputDevice const & _rOutDev, sal_Int
const Reference< XPropertySet >& _rxField,
const Reference< XNumberFormats >& _rxNumberFormats, sal_uInt16 _nControlObjectID,
const OUString& _rFieldPostfix, SdrInventor _nInventor, sal_uInt16 _nLabelObjectID,
- SdrPage* _pLabelPage, SdrPage* _pControlPage, SdrModel* _pModel, SdrUnoObj*& _rpLabel, SdrUnoObj*& _rpControl)
+ SdrPage* /*_pLabelPage*/, SdrPage* /*_pControlPage*/, SdrModel* _pModel, SdrUnoObj*& _rpLabel, SdrUnoObj*& _rpControl)
{
sal_Int32 nDataType = 0;
OUString sFieldName;
@@ -1584,8 +1584,7 @@ bool FmXFormView::createControlLabelPair( OutputDevice const & _rOutDev, sal_Int
SdrObjFactory::MakeNewObject(
*_pModel,
_nInventor,
- _nLabelObjectID,
- _pLabelPage)));
+ _nLabelObjectID)));
OSL_ENSURE( pLabel.get(), "FmXFormView::createControlLabelPair: could not create the label!" );
@@ -1617,8 +1616,7 @@ bool FmXFormView::createControlLabelPair( OutputDevice const & _rOutDev, sal_Int
SdrObjFactory::MakeNewObject(
*_pModel,
_nInventor,
- _nControlObjectID,
- _pControlPage)));
+ _nControlObjectID)));
OSL_ENSURE( pControl.get(), "FmXFormView::createControlLabelPair: could not create the control!" );
@@ -1782,7 +1780,7 @@ void FmXFormView::saveMarkList()
{
if ( pObj->IsGroupObject() )
{
- SdrObjListIter aIter( *pObj->GetSubList() );
+ SdrObjListIter aIter( pObj->GetSubList() );
bool bMixed = false;
while ( aIter.IsMore() && !bMixed )
bMixed = ( aIter.Next()->GetObjInventor() != SdrInventor::FmForm );
@@ -1866,7 +1864,7 @@ void FmXFormView::restoreMarkList( SdrMarkList& _rRestoredMarkList )
// it is important that the objects of the mark list are not accessed,
// because they can be already destroyed
SdrPageView* pCurPageView = m_pView->GetSdrPageView();
- SdrObjListIter aPageIter( *pPage );
+ SdrObjListIter aPageIter( pPage );
bool bFound = true;
// do all objects still exist
@@ -1877,7 +1875,7 @@ void FmXFormView::restoreMarkList( SdrMarkList& _rRestoredMarkList )
SdrObject* pObj = pMark->GetMarkedSdrObj();
if (pObj->IsGroupObject())
{
- SdrObjListIter aIter(*pObj->GetSubList());
+ SdrObjListIter aIter(pObj->GetSubList());
while (aIter.IsMore() && bFound)
bFound = lcl_hasObject(aPageIter, aIter.Next());
}
diff --git a/svx/source/form/navigatortree.cxx b/svx/source/form/navigatortree.cxx
index 864a66913e47..ca831645b4cf 100644
--- a/svx/source/form/navigatortree.cxx
+++ b/svx/source/form/navigatortree.cxx
@@ -93,7 +93,7 @@ namespace svxform
_rMapping.clear();
- SdrObjListIter aIter( *_pPage );
+ SdrObjListIter aIter( _pPage );
while ( aIter.IsMore() )
{
SdrObject* pSdrObject = aIter.Next();
@@ -2049,7 +2049,7 @@ namespace svxform
SdrPage* pPage = pPageView->GetPage();
//FmFormPage* pFormPage = dynamic_cast< FmFormPage* >( pPage );
- SdrObjListIter aIter( *pPage );
+ SdrObjListIter aIter( pPage );
while ( aIter.IsMore() )
{
SdrObject* pSdrObject = aIter.Next();
@@ -2110,7 +2110,7 @@ namespace svxform
SdrPage* pPage = pPageView->GetPage();
bool bPaint = false;
- SdrObjListIter aIter( *pPage );
+ SdrObjListIter aIter( pPage );
while ( aIter.IsMore() )
{
SdrObject* pSdrObject = aIter.Next();
diff --git a/svx/source/form/navigatortreemodel.cxx b/svx/source/form/navigatortreemodel.cxx
index 0b9a98d44012..01136bf189b0 100644
--- a/svx/source/form/navigatortreemodel.cxx
+++ b/svx/source/form/navigatortreemodel.cxx
@@ -704,7 +704,7 @@ namespace svxform
}
else if ( pObj->IsGroupObject() )
{
- SdrObjListIter aIter( *pObj->GetSubList() );
+ SdrObjListIter aIter( pObj->GetSubList() );
while ( aIter.IsMore() )
InsertSdrObj( aIter.Next() );
}
@@ -730,7 +730,7 @@ namespace svxform
}
else if ( pObj->IsGroupObject() )
{
- SdrObjListIter aIter( *pObj->GetSubList() );
+ SdrObjListIter aIter( pObj->GetSubList() );
while ( aIter.IsMore() )
RemoveSdrObj( aIter.Next() );
}
diff --git a/svx/source/inc/fmobj.hxx b/svx/source/inc/fmobj.hxx
index 0533327d6aee..476c3c52d0ae 100644
--- a/svx/source/inc/fmobj.hxx
+++ b/svx/source/inc/fmobj.hxx
@@ -70,7 +70,8 @@ public:
SAL_DLLPRIVATE void ClearObjEnv();
public:
- SAL_DLLPRIVATE virtual void SetPage(SdrPage* pNewPage) override;
+ // react on page change
+ virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
SAL_DLLPRIVATE virtual SdrInventor GetObjInventor() const override;
SAL_DLLPRIVATE virtual sal_uInt16 GetObjIdentifier() const override;
diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx b/svx/source/sdr/contact/objectcontactofpageview.cxx
index badb9f4aa121..bbd8f48a4c13 100644
--- a/svx/source/sdr/contact/objectcontactofpageview.cxx
+++ b/svx/source/sdr/contact/objectcontactofpageview.cxx
@@ -339,15 +339,15 @@ namespace sdr
if(pActiveGroupList)
{
- if(dynamic_cast<const SdrPage*>( pActiveGroupList) != nullptr)
+ if(nullptr != pActiveGroupList->getSdrPageFromSdrObjList())
{
// It's a Page itself
- return &(static_cast<SdrPage*>(pActiveGroupList)->GetViewContact());
+ return &(pActiveGroupList->getSdrPageFromSdrObjList()->GetViewContact());
}
- else if(pActiveGroupList->GetOwnerObj())
+ else if(pActiveGroupList->getSdrObjectFromSdrObjList())
{
// Group object
- return &(pActiveGroupList->GetOwnerObj()->GetViewContact());
+ return &(pActiveGroupList->getSdrObjectFromSdrObjList()->GetViewContact());
}
}
else if(GetSdrPage())
diff --git a/svx/source/sdr/contact/viewcontactofsdrobj.cxx b/svx/source/sdr/contact/viewcontactofsdrobj.cxx
index 67ba3c507967..6d3dfb2f80e3 100644
--- a/svx/source/sdr/contact/viewcontactofsdrobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrobj.cxx
@@ -99,9 +99,9 @@ ViewContact* ViewContactOfSdrObj::GetParentContact() const
else
{
// Is a group?
- if(pObjList->GetOwnerObj())
+ if(pObjList->getSdrObjectFromSdrObjList())
{
- pRetval = &(pObjList->GetOwnerObj()->GetViewContact());
+ pRetval = &(pObjList->getSdrObjectFromSdrObjList()->GetViewContact());
}
}
}
diff --git a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
index 3c7598115363..9cf85e52d530 100644
--- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
@@ -96,7 +96,7 @@ namespace sdr
//width/height to avoid oom and massive churn generating a huge
//polygon chain to cover the length in applyLineDashing if this
//line is dashed
- const SdrPage* pPage = GetPathObj().GetPage();
+ const SdrPage* pPage(GetPathObj().getSdrPageFromSdrObject());
sal_Int32 nPageWidth = pPage ? pPage->GetWidth() : 0;
sal_Int32 nPageHeight = pPage ? pPage->GetHeight() : 0;
diff --git a/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx b/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
index f6e425fb1cfa..db34c85e2c14 100644
--- a/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
@@ -248,7 +248,7 @@ namespace sdr
{
// sometimes it is needed that each graphic is completely available and swapped in
// for these cases a ForceSwapIn is called later at the graphic object
- if ( rGrafObj.GetPage() && rGrafObj.GetPage()->IsMasterPage() )
+ if ( rGrafObj.getSdrPageFromSdrObject() && rGrafObj.getSdrPageFromSdrObject()->IsMasterPage() )
{
// #i102380# force Swap-In for GraphicObjects on MasterPage to have a nicer visualisation
bDoAsynchronGraphicLoading = false;
diff --git a/svx/source/sdr/properties/attributeproperties.cxx b/svx/source/sdr/properties/attributeproperties.cxx
index 07987534b19b..4e8711341b82 100644
--- a/svx/source/sdr/properties/attributeproperties.cxx
+++ b/svx/source/sdr/properties/attributeproperties.cxx
@@ -44,32 +44,11 @@
#include <svx/svdmodel.hxx>
#include <svx/svdtrans.hxx>
#include <svx/svdpage.hxx>
-#include <svx/svdograf.hxx>
-#include <svx/svdoole2.hxx>
namespace sdr
{
namespace properties
{
- SfxStyleSheet* AttributeProperties::ImpGetDefaultStyleSheet() const
- {
- // use correct default stylesheet #119287#
- const SdrGrafObj* pIsSdrGrafObj(dynamic_cast< const SdrGrafObj* >(&GetSdrObject()));
- const SdrOle2Obj* pIsSdrOle2Obj(dynamic_cast< const SdrOle2Obj* >(&GetSdrObject()));
- SfxStyleSheet* pRetval(nullptr);
-
- if(pIsSdrGrafObj || pIsSdrOle2Obj)
- {
- pRetval = GetSdrObject().getSdrModelFromSdrObject().GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj();
- }
- else
- {
- pRetval = GetSdrObject().getSdrModelFromSdrObject().GetDefaultStyleSheet();
- }
-
- return pRetval;
- }
-
void AttributeProperties::ImpSetParentAtSfxItemSet(bool bDontRemoveHardAttr)
{
if(HasSfxItemSet() && mpStyleSheet)
@@ -260,25 +239,29 @@ namespace sdr
if(!bHadSfxItemSet)
{
- if(GetStyleSheet())
+ // SfxItemSet was created and ForceDefaultAttributes() is done.
+ // We now need to set a default SfxStyleSheet at the SdrObject. This
+ // is possible now since we always have the SdrModel in SdrObject,
+ // so use applyDefaultStyleSheetFromSdrModel() which will do the
+ // right thing in each derivation of BaseProperties.
+ // We also need to 'rescue' mpStyleSheet if it is already set,
+ // which means a SfxStyleSheet was already set/ocopied but not
+ // yet set at the SdrObject. See copy-constructor and how it remembers
+ // the SfxStyleSheet there. This time, do not reset the
+ // attributes already set - this is done above.
+ SfxStyleSheet* pImplicitelyAlreadySet(mpStyleSheet);
+
+ // Set missing defaults and do RemoveHardAttributes. This is
+ // important, it deletes again the attributes set in
+ // ForceDefaultAttributes() which are set in the default
+ // SfxStyleSheet.
+ const_cast< AttributeProperties* >(this)->applyDefaultStyleSheetFromSdrModel();
+
+ if(pImplicitelyAlreadySet)
{
// Late-Init of setting parent to SfxStyleSheet after
- // it's creation. See copy-constructor and how it remembers
- // the SfxStyleSheet there.
- // It is necessary to reset mpStyleSheet to nullptr to
- // not trigger alarm inside ImpAddStyleSheet (!)
- SfxStyleSheet* pNew(mpStyleSheet);
- const_cast< AttributeProperties* >(this)->mpStyleSheet = nullptr;
- const_cast< AttributeProperties* >(this)->ImpAddStyleSheet(
- pNew,
- true);
- }
- else
- {
- // Set missing defaults and do not RemoveHardAttributes
- const_cast< AttributeProperties* >(this)->ImpAddStyleSheet(
- ImpGetDefaultStyleSheet(),
- true);
+ // it's creation.
+ const_cast< AttributeProperties* >(this)->SetStyleSheet(pImplicitelyAlreadySet, true);
}
}
@@ -535,7 +518,7 @@ namespace sdr
const SdrObject& rObj(GetSdrObject());
if (rObj.IsInserted())
{
- const SdrPage* const pPage(rObj.GetPage());
+ const SdrPage* const pPage(rObj.getSdrPageFromSdrObject());
if (pPage && pPage->IsInserted())
return true;
}
diff --git a/svx/source/sdr/properties/graphicproperties.cxx b/svx/source/sdr/properties/graphicproperties.cxx
index 6c624a4108d3..2c606b80d433 100644
--- a/svx/source/sdr/properties/graphicproperties.cxx
+++ b/svx/source/sdr/properties/graphicproperties.cxx
@@ -27,12 +27,27 @@
#include <editeng/eeitem.hxx>
#include <svx/svdograf.hxx>
#include <svx/sdgcpitm.hxx>
-
+#include <svx/svdmodel.hxx>
namespace sdr
{
namespace properties
{
+ void GraphicProperties::applyDefaultStyleSheetFromSdrModel()
+ {
+ SfxStyleSheet* pStyleSheet(GetSdrObject().getSdrModelFromSdrObject().GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj());
+
+ if(pStyleSheet)
+ {
+ SetStyleSheet(pStyleSheet, false);
+ }
+ else
+ {
+ SetMergedItem(XFillStyleItem(com::sun::star::drawing::FillStyle_NONE));
+ SetMergedItem(XLineStyleItem(com::sun::star::drawing::LineStyle_NONE));
+ }
+ }
+
// create a new itemset
std::unique_ptr<SfxItemSet> GraphicProperties::CreateObjectSpecificItemSet(SfxItemPool& rPool)
{
diff --git a/svx/source/sdr/properties/itemsettools.cxx b/svx/source/sdr/properties/itemsettools.cxx
index 7c3bea85aac9..63b0ca75acda 100644
--- a/svx/source/sdr/properties/itemsettools.cxx
+++ b/svx/source/sdr/properties/itemsettools.cxx
@@ -36,7 +36,7 @@ namespace sdr
{
if (const SdrObjGroup* pGroupObj = dynamic_cast<const SdrObjGroup*>(&rObj))
{
- SdrObjListIter aIter(*pGroupObj, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pGroupObj->GetSubList(), SdrIterMode::DeepNoGroups);
maRectangles.reserve(aIter.Count());
while(aIter.IsMore())
diff --git a/svx/source/sdr/properties/oleproperties.cxx b/svx/source/sdr/properties/oleproperties.cxx
index f740e9cc259b..096e3e2ec71f 100644
--- a/svx/source/sdr/properties/oleproperties.cxx
+++ b/svx/source/sdr/properties/oleproperties.cxx
@@ -17,17 +17,32 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-
#include <sdr/properties/oleproperties.hxx>
#include <svl/itemset.hxx>
#include <svx/xfillit0.hxx>
#include <svx/xlineit0.hxx>
-
+#include <svx/svdobj.hxx>
+#include <svx/svdmodel.hxx>
namespace sdr
{
namespace properties
{
+ void OleProperties::applyDefaultStyleSheetFromSdrModel()
+ {
+ SfxStyleSheet* pStyleSheet(GetSdrObject().getSdrModelFromSdrObject().GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj());
+
+ if(pStyleSheet)
+ {
+ SetStyleSheet(pStyleSheet, false);
+ }
+ else
+ {
+ SetMergedItem(XFillStyleItem(com::sun::star::drawing::FillStyle_NONE));
+ SetMergedItem(XLineStyleItem(com::sun::star::drawing::LineStyle_NONE));
+ }
+ }
+
OleProperties::OleProperties(SdrObject& rObj)
: RectangleProperties(rObj)
{
diff --git a/svx/source/sdr/properties/properties.cxx b/svx/source/sdr/properties/properties.cxx
index 256e6ea275bb..9670c743722f 100644
--- a/svx/source/sdr/properties/properties.cxx
+++ b/svx/source/sdr/properties/properties.cxx
@@ -24,6 +24,7 @@
#include <svx/svditer.hxx>
#include <svx/xfillit0.hxx>
#include <vcl/outdev.hxx>
+#include <svx/svdmodel.hxx>
using namespace com::sun::star;
@@ -40,6 +41,11 @@ namespace sdr
{
}
+ void BaseProperties::applyDefaultStyleSheetFromSdrModel()
+ {
+ SetStyleSheet(GetSdrObject().getSdrModelFromSdrObject().GetDefaultStyleSheet(), false);
+ }
+
const SdrObject& BaseProperties::GetSdrObject() const
{
return mrObject;
diff --git a/svx/source/svdraw/svdcrtv.cxx b/svx/source/svdraw/svdcrtv.cxx
index 9a495596b372..070d20dec458 100644
--- a/svx/source/svdraw/svdcrtv.cxx
+++ b/svx/source/svdraw/svdcrtv.cxx
@@ -402,19 +402,13 @@ bool SdrCreateView::ImpBegCreateObj(SdrInventor nInvent, sal_uInt16 nIdent, cons
if(pPreparedFactoryObject)
{
pCurrentCreate = pPreparedFactoryObject;
-
- if(pCreatePV->GetPage())
- {
- pCurrentCreate->SetPage(pCreatePV->GetPage());
- }
}
else
{
pCurrentCreate = SdrObjFactory::MakeNewObject(
*mpModel,
nInvent,
- nIdent,
- pCreatePV->GetPage());
+ nIdent);
}
Point aPnt(rPnt);
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index 78ade77c3c49..980399c0d6c6 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -789,9 +789,9 @@ void SdrEditView::DeleteMarkedObj()
for(size_t a = 0; a < nCount; ++a)
{
// in the first run, add all found parents, but only once
- SdrMark* pMark = rMarkList.GetMark(a);
- SdrObject* pObject = pMark->GetMarkedSdrObj();
- SdrObject* pParent = pObject->getParentOfSdrObject()->GetOwnerObj();
+ SdrMark* pMark(rMarkList.GetMark(a));
+ SdrObject* pObject(pMark->GetMarkedSdrObj());
+ SdrObject* pParent(pObject->getParentOfSdrObject()->getSdrObjectFromSdrObjList());
if(pParent)
{
diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx
index cffae4f8bed4..666fac2edbe8 100644
--- a/svx/source/svdraw/svdedtv1.cxx
+++ b/svx/source/svdraw/svdedtv1.cxx
@@ -143,10 +143,10 @@ std::vector< SdrUndoAction* > SdrEditView::CreateConnectorUndo( SdrObject& rO )
if ( rO.GetBroadcaster() )
{
- const SdrPage* pPage = rO.GetPage();
+ const SdrPage* pPage = rO.getSdrPageFromSdrObject();
if ( pPage )
{
- SdrObjListIter aIter( *pPage, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aIter(pPage, SdrIterMode::DeepWithGroups);
while( aIter.IsMore() )
{
SdrObject* pPartObj = aIter.Next();
@@ -600,7 +600,7 @@ void SdrEditView::CrookMarkedObj(const Point& rRef, const Point& rRad, SdrCrookM
if (bNoContortion || pOL==nullptr) {
ImpCrookObj(pO,rRef,rRad,eMode,bVertical,bNoContortion,bRotate,aMarkRect);
} else {
- SdrObjListIter aIter(*pOL,SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pOL,SdrIterMode::DeepNoGroups);
while (aIter.IsMore()) {
SdrObject* pO1=aIter.Next();
ImpCrookObj(pO1,rRef,rRad,eMode,bVertical,bNoContortion,bRotate,aMarkRect);
@@ -674,7 +674,7 @@ void SdrEditView::DistortMarkedObj(const tools::Rectangle& rRef, const XPolygon&
if (bNoContortion || pOL==nullptr) {
ImpDistortObj(pO,aRefRect,rDistortedRect,bNoContortion);
} else {
- SdrObjListIter aIter(*pOL,SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pOL,SdrIterMode::DeepNoGroups);
while (aIter.IsMore()) {
SdrObject* pO1=aIter.Next();
ImpDistortObj(pO1,aRefRect,rDistortedRect,bNoContortion);
@@ -1805,7 +1805,7 @@ void SdrEditView::AlignMarkedObjects(SdrHorAlign eHor, SdrVertAlign eVert)
if (nMarkCount==1)
{ // align single object to page
const SdrObject* pObj=GetMarkedObjectByIndex(0);
- const SdrPage* pPage=pObj->GetPage();
+ const SdrPage* pPage=pObj->getSdrPageFromSdrObject();
const SdrPageGridFrameList* pGFL=pPage->GetGridFrameList(GetSdrPageViewOfMarkedByIndex(0),&(pObj->GetSnapRect()));
const SdrPageGridFrame* pFrame=nullptr;
if (pGFL!=nullptr && pGFL->GetCount()!=0)
diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx
index 53f109ad414d..7f1f061527d1 100644
--- a/svx/source/svdraw/svdedtv2.cxx
+++ b/svx/source/svdraw/svdedtv2.cxx
@@ -540,7 +540,7 @@ void SdrEditView::ImpCopyAttributes(const SdrObject* pSource, SdrObject* pDest)
if (pSource!=nullptr) {
SdrObjList* pOL=pSource->GetSubList();
if (pOL!=nullptr && !pSource->Is3DObj()) { // get first non-group object from group
- SdrObjListIter aIter(*pOL,SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pOL,SdrIterMode::DeepNoGroups);
pSource=aIter.Next();
}
}
@@ -586,7 +586,7 @@ bool SdrEditView::ImpCanConvertForCombine(const SdrObject* pObj)
if(pOL && !pObj->Is3DObj())
{
- SdrObjListIter aIter(*pOL, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pOL, SdrIterMode::DeepNoGroups);
while(aIter.IsMore())
{
@@ -629,7 +629,7 @@ basegfx::B2DPolyPolygon SdrEditView::ImpGetPolyPolygon1(const SdrObject* pObj)
if(pOL)
{
- SdrObjListIter aIter(*pOL, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pOL, SdrIterMode::DeepNoGroups);
while(aIter.IsMore())
{
@@ -666,7 +666,7 @@ basegfx::B2DPolyPolygon SdrEditView::ImpGetPolyPolygon(const SdrObject* pObj)
if(pOL && !pObj->Is3DObj())
{
basegfx::B2DPolyPolygon aRetval;
- SdrObjListIter aIter(*pOL, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pOL, SdrIterMode::DeepNoGroups);
while(aIter.IsMore())
{
@@ -1433,7 +1433,7 @@ bool SdrEditView::ImpCanDismantle(const SdrObject* pObj, bool bMakeLines)
if(pOL)
{
// group object -- check all members if they're PathObjs
- SdrObjListIter aIter(*pOL, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pOL, SdrIterMode::DeepNoGroups);
while(aIter.IsMore() && !bOtherObjs)
{
@@ -1685,7 +1685,7 @@ void SdrEditView::DismantleMarkedObjects(bool bMakeLines)
size_t nPos=nPos0+1;
SdrObjList* pSubList=pObj->GetSubList();
if (pSubList!=nullptr && !pObj->Is3DObj()) {
- SdrObjListIter aIter(*pSubList,SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pSubList,SdrIterMode::DeepNoGroups);
while (aIter.IsMore()) {
const SdrObject* pObj1=aIter.Next();
ImpDismantleOneObject(pObj1,*pOL,nPos,pPV,bMakeLines);
@@ -1970,7 +1970,7 @@ void SdrEditView::ImpConvertTo(bool bPath, bool bLineToArea)
SdrPageView* pPV=pM->GetPageView();
if (pObj->IsGroupObject() && !pObj->Is3DObj()) {
SdrObject* pGrp=pObj;
- SdrObjListIter aIter(*pGrp,SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(*pGrp, SdrIterMode::DeepNoGroups);
while (aIter.IsMore()) {
pObj=aIter.Next();
ImpConvertOneObj(pObj,bPath,bLineToArea);
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 93d317ff0fbf..fc0de4bdcf29 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -1240,7 +1240,7 @@ bool SdrObjEditView::SdrBeginTextEdit(
// Register an outliner view for all other sdr views that
// show the same page, so that when the text edit changes,
// all interested windows get an invalidation.
- SdrViewIter aIter(pObj->GetPage());
+ SdrViewIter aIter(pObj->getSdrPageFromSdrObject());
for (SdrView* pView = aIter.FirstView(); pView; pView = aIter.NextView())
{
if (pView == this)
diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx
index fb8aab8a82ec..526b3ca82cde 100644
--- a/svx/source/svdraw/svdetc.cxx
+++ b/svx/source/svdraw/svdetc.cxx
@@ -518,7 +518,7 @@ namespace
Color& rCol)
{
bool bRet(false);
- bool bMaster(rList.GetPage() && rList.GetPage()->IsMasterPage());
+ bool bMaster(rList.getSdrPageFromSdrObjList() && rList.getSdrPageFromSdrObjList()->IsMasterPage());
for(size_t no(rList.GetObjCount()); !bRet && no > 0; )
{
diff --git a/svx/source/svdraw/svditer.cxx b/svx/source/svdraw/svditer.cxx
index 859b9d3390a4..2e8b8a8e1035 100644
--- a/svx/source/svdraw/svditer.cxx
+++ b/svx/source/svdraw/svditer.cxx
@@ -24,73 +24,117 @@
#include <svx/svdmark.hxx>
#include <svx/scene3d.hxx>
-SdrObjListIter::SdrObjListIter(const SdrObjList& rObjList, SdrIterMode eMode, bool bReverse)
-: mnIndex(0),
- mbReverse(bReverse)
+SdrObjListIter::SdrObjListIter(const SdrObjList* pObjList, SdrIterMode eMode, bool bReverse)
+: maObjList(),
+ mnIndex(0),
+ mbReverse(bReverse),
+ mbUseZOrder(true)
{
- ImpProcessObjectList(rObjList, eMode, true);
+ if(nullptr != pObjList)
+ {
+ ImpProcessObjectList(*pObjList, eMode);
+ }
+
+ Reset();
+}
+
+SdrObjListIter::SdrObjListIter(const SdrObjList* pObjList, bool bUseZOrder, SdrIterMode eMode, bool bReverse)
+: maObjList(),
+ mnIndex(0),
+ mbReverse(bReverse),
+ mbUseZOrder(bUseZOrder)
+{
+ if(nullptr != pObjList)
+ {
+ // correct when we have no ObjectNavigationOrder
+ if(!mbUseZOrder && !pObjList->HasObjectNavigationOrder())
+ {
+ mbUseZOrder = false;
+ }
+
+ ImpProcessObjectList(*pObjList, eMode);
+ }
+
Reset();
}
-SdrObjListIter::SdrObjListIter(const SdrObjList& rObjList, bool bUseZOrder, SdrIterMode eMode)
-: mnIndex(0),
- mbReverse(false)
+SdrObjListIter::SdrObjListIter(const SdrObject& rSdrObject, SdrIterMode eMode, bool bReverse)
+: maObjList(),
+ mnIndex(0),
+ mbReverse(bReverse),
+ mbUseZOrder(true)
{
- ImpProcessObjectList(rObjList, eMode, bUseZOrder);
+ ImpProcessObj(rSdrObject, eMode);
Reset();
}
-SdrObjListIter::SdrObjListIter( const SdrObject& rObj, SdrIterMode eMode )
-: mnIndex(0),
- mbReverse(false)
+SdrObjListIter::SdrObjListIter(const SdrPage* pSdrPage, SdrIterMode eMode, bool bReverse)
+: maObjList(),
+ mnIndex(0),
+ mbReverse(bReverse),
+ mbUseZOrder(true)
{
- if ( dynamic_cast<const SdrObjGroup*>(&rObj) != nullptr )
- ImpProcessObjectList(*rObj.GetSubList(), eMode, true);
- else
- maObjList.push_back(const_cast<SdrObject*>(&rObj));
+ if(nullptr != pSdrPage)
+ {
+ ImpProcessObjectList(*dynamic_cast< const SdrObjList* >(pSdrPage), eMode);
+ }
+
Reset();
}
SdrObjListIter::SdrObjListIter( const SdrMarkList& rMarkList, SdrIterMode eMode )
-: mnIndex(0),
- mbReverse(false)
+: maObjList(),
+ mnIndex(0),
+ mbReverse(false),
+ mbUseZOrder(true)
{
ImpProcessMarkList(rMarkList, eMode);
Reset();
}
-void SdrObjListIter::ImpProcessObjectList(const SdrObjList& rObjList, SdrIterMode eMode, bool bUseZOrder)
-{
- for( size_t nIdx = 0, nCount = rObjList.GetObjCount(); nIdx < nCount; ++nIdx )
+void SdrObjListIter::ImpProcessObjectList(const SdrObjList& rObjList, SdrIterMode eMode)
+{ for(size_t nIdx(0), nCount(rObjList.GetObjCount()); nIdx < nCount; ++nIdx)
{
- SdrObject* pObj = bUseZOrder ?
- rObjList.GetObj( nIdx ) : rObjList.GetObjectForNavigationPosition( nIdx );
- OSL_ASSERT( pObj != nullptr );
- if( pObj )
- ImpProcessObj( pObj, eMode, bUseZOrder );
+ const SdrObject* pSdrObject(mbUseZOrder
+ ? rObjList.GetObj(nIdx)
+ : rObjList.GetObjectForNavigationPosition(nIdx));
+
+ if(nullptr == pSdrObject)
+ {
+ OSL_ENSURE(false, "SdrObjListIter: corrupted SdrObjList (!)");
+ }
+ else
+ {
+ ImpProcessObj(*pSdrObject, eMode);
+ }
}
}
-void SdrObjListIter::ImpProcessMarkList( const SdrMarkList& rMarkList, SdrIterMode eMode )
+void SdrObjListIter::ImpProcessMarkList(const SdrMarkList& rMarkList, SdrIterMode eMode)
{
for( size_t nIdx = 0, nCount = rMarkList.GetMarkCount(); nIdx < nCount; ++nIdx )
+ {
if( SdrObject* pObj = rMarkList.GetMark( nIdx )->GetMarkedSdrObj() )
- ImpProcessObj( pObj, eMode, false );
+ {
+ ImpProcessObj(*pObj, eMode);
+ }
+ }
}
-void SdrObjListIter::ImpProcessObj(SdrObject* pObj, SdrIterMode eMode, bool bUseZOrder)
+void SdrObjListIter::ImpProcessObj(const SdrObject& rSdrObject, SdrIterMode eMode)
{
- bool bIsGroup = pObj->IsGroupObject();
- // 3D objects are not group objects, IsGroupObject()
- // only tests if pSub is not null ptr :-(
- if( bIsGroup && dynamic_cast<const E3dObject* >(pObj) != nullptr && dynamic_cast<const E3dScene* >(pObj) == nullptr)
- bIsGroup = false;
+ const SdrObjList* pChildren(rSdrObject.getChildrenOfSdrObject());
+ const bool bIsGroup(nullptr != pChildren);
- if( !bIsGroup || (eMode != SdrIterMode::DeepNoGroups) )
- maObjList.push_back(pObj);
+ if(!bIsGroup || (SdrIterMode::DeepNoGroups != eMode))
+ {
+ maObjList.push_back(&rSdrObject);
+ }
- if( bIsGroup && (eMode != SdrIterMode::Flat) )
- ImpProcessObjectList( *pObj->GetSubList(), eMode, bUseZOrder );
+ if(bIsGroup && (SdrIterMode::Flat != eMode))
+ {
+ ImpProcessObjectList(*pChildren, eMode);
+ }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/svdraw/svdmark.cxx b/svx/source/svdraw/svdmark.cxx
index 00901afc309e..562b14ff1b78 100644
--- a/svx/source/svdraw/svdmark.cxx
+++ b/svx/source/svdraw/svdmark.cxx
@@ -762,7 +762,7 @@ namespace sdr
SfxListener* pLst = pBC->GetListener(nl);
SdrEdgeObj* pEdge = dynamic_cast<SdrEdgeObj*>( pLst );
- if(pEdge && pEdge->IsInserted() && pEdge->GetPage() == pCandidate->GetPage())
+ if(pEdge && pEdge->IsInserted() && pEdge->getSdrPageFromSdrObject() == pCandidate->getSdrPageFromSdrObject())
{
SdrMark aM(pEdge, maMarkedObjectList.GetMark(a)->GetPageView());
diff --git a/svx/source/svdraw/svdmodel.cxx b/svx/source/svdraw/svdmodel.cxx
index 1b17da722a86..bde671498fd1 100644
--- a/svx/source/svdraw/svdmodel.cxx
+++ b/svx/source/svdraw/svdmodel.cxx
@@ -2061,7 +2061,7 @@ SdrHint::SdrHint(SdrHintKind eNewHint)
SdrHint::SdrHint(SdrHintKind eNewHint, const SdrObject& rNewObj)
: meHint(eNewHint),
mpObj(&rNewObj),
- mpPage(rNewObj.GetPage())
+ mpPage(rNewObj.getSdrPageFromSdrObject())
{
}
diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx
index f8ad13562968..ea0255ba2865 100644
--- a/svx/source/svdraw/svdmrkv.cxx
+++ b/svx/source/svdraw/svdmrkv.cxx
@@ -1753,8 +1753,8 @@ SdrObject* SdrMarkView::CheckSingleSdrObjectHit(const Point& rPnt, sal_uInt16 nT
if (pOL!=nullptr)
{
bool bBack(nOptions & SdrSearchOptions::BACKWARD);
- bool bRemap(pOL->GetOwnerObj() && dynamic_cast< const E3dScene* >(pOL->GetOwnerObj()) != nullptr);
- E3dScene* pRemapScene = (bRemap ? static_cast<E3dScene*>(pOL->GetOwnerObj()) : nullptr);
+ bool bRemap(pOL->getSdrObjectFromSdrObjList() && dynamic_cast< const E3dScene* >(pOL->getSdrObjectFromSdrObjList()) != nullptr);
+ E3dScene* pRemapScene = (bRemap ? static_cast< E3dScene* >(pOL->getSdrObjectFromSdrObjList()) : nullptr);
const size_t nObjCount=pOL->GetObjCount();
size_t nObjNum=bBack ? 0 : nObjCount;
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index a6a4a756fd90..23308b4eaf40 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -2836,11 +2836,12 @@ void SdrObjCustomShape::NbcSetStyleSheet( SfxStyleSheet* pNewStyleSheet, bool bD
SdrObject::NbcSetStyleSheet( pNewStyleSheet, bDontRemoveHardAttr );
}
-void SdrObjCustomShape::SetPage( SdrPage* pNewPage )
+void SdrObjCustomShape::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- SdrTextObj::SetPage( pNewPage );
+ // call parent
+ SdrTextObj::handlePageChange(pOldPage, pNewPage);
- if( pNewPage )
+ if(nullptr != pNewPage)
{
// invalidating rectangles by SetRectsDirty is not sufficient,
// AdjustTextFrameWidthAndHeight() also has to be made, both
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 2ee6999ac93a..5b313c907358 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -279,6 +279,52 @@ void SdrObject::ActionChanged() const
GetViewContact().ActionChanged();
}
+SdrPage* SdrObject::getSdrPageFromSdrObject() const
+{
+ if(getParentOfSdrObject())
+ {
+ return getParentOfSdrObject()->getSdrPageFromSdrObjList();
+ }
+
+ return nullptr;
+}
+
+SdrModel& SdrObject::getSdrModelFromSdrObject() const
+{
+ return mrSdrModelFromSdrObject;
+}
+
+void SdrObject::setParentOfSdrObject(SdrObjList* pNewObjList)
+{
+ if(getParentOfSdrObject() != pNewObjList)
+ {
+ // remember current page
+ SdrPage* pOldPage(getSdrPageFromSdrObject());
+
+ // set new parent
+ mpParentOfSdrObject = pNewObjList;
+
+ // get new page
+ SdrPage* pNewPage(getSdrPageFromSdrObject());
+
+ // broadcast page change over objects if needed
+ if(pOldPage != pNewPage)
+ {
+ handlePageChange(pOldPage, pNewPage);
+ }
+ }
+}
+
+SdrObjList* SdrObject::getParentOfSdrObject() const
+{
+ return mpParentOfSdrObject;
+}
+
+SdrObjList* SdrObject::getChildrenOfSdrObject() const
+{
+ // default has no children
+ return nullptr;
+}
void SdrObject::SetBoundRectDirty()
{
@@ -289,7 +335,6 @@ void SdrObject::SetBoundRectDirty()
SdrObject::SdrObject(SdrModel& rSdrModel)
: mpFillGeometryDefiningShape(nullptr)
,mrSdrModelFromSdrObject(rSdrModel)
- ,pPage(nullptr)
,pUserCall(nullptr)
,pPlusData(nullptr)
,mpImpl(new Impl)
@@ -393,48 +438,22 @@ void SdrObject::Free( SdrObject*& _rpObject )
delete pObject;
}
-void SdrObject::SetRectsDirty(bool bNotMyself)
+void SdrObject::SetRectsDirty(bool bNotMyself, bool bRecursive)
{
- if (!bNotMyself) {
+ if (!bNotMyself)
+ {
SetBoundRectDirty();
bSnapRectDirty=true;
}
- if (nullptr != getParentOfSdrObject())
+ if (bRecursive && nullptr != getParentOfSdrObject())
{
- getParentOfSdrObject()->SetRectsDirty();
+ getParentOfSdrObject()->SetSdrObjListRectsDirty();
}
}
-void SdrObject::setParentOfSdrObject(SdrObjList* pNewObjList)
+void SdrObject::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- if(getParentOfSdrObject() != pNewObjList)
- {
- mpParentOfSdrObject = pNewObjList;
- }
-}
-
-
-void SdrObject::SetPage(SdrPage* pNewPage)
-{
- SdrModel* pOldModel(&getSdrModelFromSdrObject());
- SdrPage* pOldPage(pPage);
-
- pPage = pNewPage;
-
- // TTTT Possibility here to add a warning for the future -> SdrModel
- // of SdrObject (this) and SdrPage. It is added to *have* the
- // same SdrModel
- // if(nullptr != pPage)
- // {
- // SdrModel* pMod(&pPage->getSdrModelFromSdrPage());
- //
- // if(pMod != &getSdrModelFromSdrObject())
- // {
- // SetModel(pMod);
- // }
- // }
-
// The creation of the UNO shape in SdrObject::getUnoShape is influenced
// by pPage, so when the page changes we need to discard the cached UNO
// shape so that a new one will be created.
@@ -447,16 +466,18 @@ void SdrObject::SetPage(SdrPage* pNewPage)
// good to think about if this is really needed - it *seems* to be intended
// for a xShape being a on-demand-creatable resource - wit hthe argument that
// the SdrPage/UnoPage used influences the SvxShape creation. This uses
- // resources and would be nice to get rid of anyways.
- if (pOldPage != pPage && !(pOldPage && pPage && pOldModel == &getSdrModelFromSdrObject()))
+ // ressources and would be nice to get rid of anyways.
+ if(nullptr == pOldPage || nullptr == pNewPage)
{
SvxShape* const pShape(getSvxShape());
+
if (pShape && !pShape->HasSdrObjectOwnership())
+ {
setUnoShape(nullptr);
+ }
}
}
-
// init global static itempool
SdrItemPool* SdrObject::mpGlobalItemPool = nullptr;
@@ -626,7 +647,7 @@ SdrObjList* SdrObject::GetSubList() const
SdrObject* SdrObject::GetUpGroup() const
{
- return nullptr != getParentOfSdrObject() ? getParentOfSdrObject()->GetOwnerObj() : nullptr;
+ return nullptr != getParentOfSdrObject() ? getParentOfSdrObject()->getSdrObjectFromSdrObjList() : nullptr;
}
void SdrObject::SetName(const OUString& rStr)
@@ -921,7 +942,7 @@ void SdrObject::SingleObjectPainter(OutputDevice& rOut) const
sdr::contact::SdrObjectVector aObjectVector;
aObjectVector.push_back(const_cast< SdrObject* >(this));
- sdr::contact::ObjectContactOfObjListPainter aPainter(rOut, aObjectVector, GetPage());
+ sdr::contact::ObjectContactOfObjListPainter aPainter(rOut, aObjectVector, getSdrPageFromSdrObject());
sdr::contact::DisplayInfo aDisplayInfo;
aPainter.ProcessDisplay(aDisplayInfo);
@@ -957,7 +978,6 @@ SdrObject& SdrObject::operator=(const SdrObject& rObj)
// draw object, an SdrObject needs to be provided, as in the normal constructor.
mpProperties = rObj.GetProperties().Clone(*this);
- pPage = rObj.pPage;
aOutRect=rObj.aOutRect;
mnLayerID = rObj.mnLayerID;
aAnchor =rObj.aAnchor;
@@ -2045,7 +2065,9 @@ void SdrObject::NbcApplyNotPersistAttr(const SfxItemSet& rAttr)
if (rAttr.GetItemState(SDRATTR_LAYERNAME,true,&pPoolItem)==SfxItemState::SET)
{
OUString aLayerName = static_cast<const SdrLayerNameItem*>(pPoolItem)->GetValue();
- const SdrLayerAdmin& rLayAd(nullptr != pPage ? pPage->GetLayerAdmin() : getSdrModelFromSdrObject().GetLayerAdmin());
+ const SdrLayerAdmin& rLayAd(nullptr != getSdrPageFromSdrObject()
+ ? getSdrPageFromSdrObject()->GetLayerAdmin()
+ : getSdrModelFromSdrObject().GetLayerAdmin());
const SdrLayer* pLayer = rLayAd.GetLayer(aLayerName);
if(nullptr != pLayer)
@@ -2114,7 +2136,9 @@ void SdrObject::TakeNotPersistAttr(SfxItemSet& rAttr) const
}
rAttr.Put(SdrLayerIdItem(GetLayer()));
- const SdrLayerAdmin& rLayAd(nullptr != pPage ? pPage->GetLayerAdmin() : getSdrModelFromSdrObject().GetLayerAdmin());
+ const SdrLayerAdmin& rLayAd(nullptr != getSdrPageFromSdrObject()
+ ? getSdrPageFromSdrObject()->GetLayerAdmin()
+ : getSdrModelFromSdrObject().GetLayerAdmin());
const SdrLayer* pLayer = rLayAd.GetLayerPerID(GetLayer());
if(nullptr != pLayer)
{
@@ -2653,9 +2677,9 @@ void SdrObject::SendUserCall(SdrUserCallType eUserCall, const tools::Rectangle&
{
SdrObject* pGroup = nullptr;
- if(nullptr != getParentOfSdrObject() && SdrObjListKind::GroupObj == getParentOfSdrObject()->GetListKind())
+ if(nullptr != getParentOfSdrObject()) // && SdrObjListKind::GroupObj == getParentOfSdrObject()->GetListKind())
{
- pGroup = getParentOfSdrObject()->GetOwnerObj();
+ pGroup = getParentOfSdrObject()->getSdrObjectFromSdrObjList();
}
if ( pUserCall )
@@ -2702,11 +2726,10 @@ void SdrObject::SendUserCall(SdrUserCallType eUserCall, const tools::Rectangle&
pGroup->GetUserCall()->Changed( *this, eChildUserType, rBoundRect );
}
- if( pGroup->getParentOfSdrObject() &&
- pGroup->getParentOfSdrObject()->GetListKind() == SdrObjListKind::GroupObj &&
- pGroup != getParentOfSdrObject()->GetOwnerObj() )
+ if( pGroup->getParentOfSdrObject() &&
+ pGroup != getParentOfSdrObject()->getSdrObjectFromSdrObjList() )
{
- pGroup = getParentOfSdrObject()->GetOwnerObj();
+ pGroup = getParentOfSdrObject()->getSdrObjectFromSdrObjList();
}
else
{
@@ -2792,9 +2815,9 @@ css::uno::Reference< css::uno::XInterface > SdrObject::getUnoShape()
if( !xShape.is() )
{
OSL_ENSURE( mpSvxShape == nullptr, "SdrObject::getUnoShape: XShape already dead, but still an IMPL pointer!" );
- if ( pPage )
+ if ( getSdrPageFromSdrObject() )
{
- uno::Reference< uno::XInterface > xPage( pPage->getUnoPage() );
+ uno::Reference< uno::XInterface > xPage( getSdrPageFromSdrObject()->getUnoPage() );
if( xPage.is() )
{
SvxDrawPage* pDrawPage = SvxDrawPage::getImplementation(xPage);
@@ -2996,7 +3019,6 @@ SdrObject* SdrObjFactory::MakeNewObject(
SdrModel& rSdrModel,
SdrInventor nInventor,
sal_uInt16 nIdentifier,
- SdrPage* pPage,
const tools::Rectangle* pSnapRect)
{
SdrObject* pObj(nullptr);
@@ -3126,11 +3148,6 @@ SdrObject* SdrObjFactory::MakeNewObject(
return nullptr;
}
- if(nullptr != pPage)
- {
- pObj->SetPage(pPage);
- }
-
if(bSetSnapRect && nullptr != pSnapRect)
{
pObj->SetSnapRect(*pSnapRect);
diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx
index 575b31e5e719..860b4f018a81 100644
--- a/svx/source/svdraw/svdoedge.cxx
+++ b/svx/source/svdraw/svdoedge.cxx
@@ -182,6 +182,20 @@ SdrEdgeObj::~SdrEdgeObj()
SdrEdgeObj::DisconnectFromNode(false);
}
+void SdrEdgeObj::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
+{
+ // call parent
+ SdrTextObj::handlePageChange(pOldPage, pNewPage);
+
+ if(nullptr != GetConnection(true).GetObject() || nullptr != GetConnection(false).GetObject())
+ {
+ // check broadcasters; when we are not inserted we do not need broadcasters
+ // TTTT not yet added, but keep hint to do this here
+ // mpCon1->ownerPageChange();
+ // mpCon2->ownerPageChange();
+ }
+}
+
void SdrEdgeObj::ImpSetAttrToEdgeInfo()
{
const SfxItemSet& rSet = GetObjectItemSet();
@@ -471,8 +485,14 @@ void SdrEdgeObj::DisconnectFromNode(bool bTail1)
SdrObject* SdrEdgeObj::GetConnectedNode(bool bTail1) const
{
- SdrObject* pObj=GetConnection(bTail1).pObj;
- if (pObj!=nullptr && (pObj->GetPage()!=pPage || !pObj->IsInserted())) pObj=nullptr;
+ SdrObject* pObj(GetConnection(bTail1).pObj);
+
+ if(nullptr != pObj
+ && (pObj->getSdrPageFromSdrObject() != getSdrPageFromSdrObject() || !pObj->IsInserted()))
+ {
+ pObj = nullptr;
+ }
+
return pObj;
}
@@ -481,7 +501,9 @@ bool SdrEdgeObj::CheckNodeConnection(bool bTail1) const
bool bRet = false;
const SdrObjConnection& rCon=GetConnection(bTail1);
sal_uInt16 nPointCount=pEdgeTrack->GetPointCount();
- if (rCon.pObj!=nullptr && rCon.pObj->GetPage()==pPage && nPointCount!=0) {
+
+ if(nullptr != rCon.pObj && rCon.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject() && 0 != nPointCount)
+ {
const SdrGluePointList* pGPL=rCon.pObj->GetGluePointList();
sal_uInt16 nConAnz=pGPL==nullptr ? 0 : pGPL->GetCount();
sal_uInt16 nGesAnz=nConAnz+8;
@@ -707,12 +729,12 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const XPolygon& rTrack0, SdrObjConnection&
}
// #i54102# To allow interactive preview, do also if not inserted
- bool bCon1=rCon1.pObj!=nullptr && rCon1.pObj->GetPage()==pPage;
- bool bCon2=rCon2.pObj!=nullptr && rCon2.pObj->GetPage()==pPage;
-
+ const bool bCon1(nullptr != rCon1.pObj && rCon1.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
+ const bool bCon2(nullptr != rCon2.pObj && rCon2.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
const SfxItemSet& rSet = GetObjectItemSet();
- if (bCon1) {
+ if (bCon1)
+ {
if (rCon1.pObj==static_cast<SdrObject const *>(this))
{
// check, just in case
@@ -722,44 +744,50 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const XPolygon& rTrack0, SdrObjConnection&
{
aBoundRect1 = rCon1.pObj->GetCurrentBoundRect();
}
+
aBoundRect1.Move(rCon1.aObjOfs.X(),rCon1.aObjOfs.Y());
aBewareRect1=aBoundRect1;
-
sal_Int32 nH = rSet.Get(SDRATTR_EDGENODE1HORZDIST).GetValue();
sal_Int32 nV = rSet.Get(SDRATTR_EDGENODE1VERTDIST).GetValue();
-
aBewareRect1.AdjustLeft( -nH );
aBewareRect1.AdjustRight(nH );
aBewareRect1.AdjustTop( -nV );
aBewareRect1.AdjustBottom(nV );
- } else {
+ }
+ else
+ {
aBoundRect1=tools::Rectangle(aPt1,aPt1);
aBoundRect1.Move(rCon1.aObjOfs.X(),rCon1.aObjOfs.Y());
aBewareRect1=aBoundRect1;
}
- if (bCon2) {
- if (rCon2.pObj==static_cast<SdrObject const *>(this)) { // check, just in case
+
+ if (bCon2)
+ {
+ if (rCon2.pObj==static_cast<SdrObject const *>(this))
+ { // check, just in case
aBoundRect2=aOutRect;
}
else
{
aBoundRect2 = rCon2.pObj->GetCurrentBoundRect();
}
+
aBoundRect2.Move(rCon2.aObjOfs.X(),rCon2.aObjOfs.Y());
aBewareRect2=aBoundRect2;
-
sal_Int32 nH = rSet.Get(SDRATTR_EDGENODE2HORZDIST).GetValue();
sal_Int32 nV = rSet.Get(SDRATTR_EDGENODE2VERTDIST).GetValue();
-
aBewareRect2.AdjustLeft( -nH );
aBewareRect2.AdjustRight(nH );
aBewareRect2.AdjustTop( -nV );
aBewareRect2.AdjustBottom(nV );
- } else {
+ }
+ else
+ {
aBoundRect2=tools::Rectangle(aPt2,aPt2);
aBoundRect2.Move(rCon2.aObjOfs.X(),rCon2.aObjOfs.Y());
aBewareRect2=aBoundRect2;
}
+
XPolygon aBestXP;
sal_uIntPtr nBestQual=0xFFFFFFFF;
SdrEdgeInfoRec aBestInfo;
@@ -771,30 +799,39 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const XPolygon& rTrack0, SdrObjConnection&
sal_uInt16 nBestAuto2=0;
sal_uInt16 nCount1=bAuto1 ? 4 : 1;
sal_uInt16 nCount2=bAuto2 ? 4 : 1;
- for (sal_uInt16 nNum1=0; nNum1<nCount1; nNum1++) {
+
+ for (sal_uInt16 nNum1=0; nNum1<nCount1; nNum1++)
+ {
if (bAuto1) rCon1.nConId=nNum1;
- if (bCon1 && rCon1.TakeGluePoint(aGP1)) {
+ if (bCon1 && rCon1.TakeGluePoint(aGP1))
+ {
aPt1=aGP1.GetPos();
nEsc1=aGP1.GetEscDir();
if (nEsc1==SdrEscapeDirection::SMART) nEsc1=ImpCalcEscAngle(rCon1.pObj,aPt1-rCon1.aObjOfs);
}
- for (sal_uInt16 nNum2=0; nNum2<nCount2; nNum2++) {
+ for (sal_uInt16 nNum2=0; nNum2<nCount2; nNum2++)
+ {
if (bAuto2) rCon2.nConId=nNum2;
- if (bCon2 && rCon2.TakeGluePoint(aGP2)) {
+ if (bCon2 && rCon2.TakeGluePoint(aGP2))
+ {
aPt2=aGP2.GetPos();
nEsc2=aGP2.GetEscDir();
if (nEsc2==SdrEscapeDirection::SMART) nEsc2=ImpCalcEscAngle(rCon2.pObj,aPt2-rCon2.aObjOfs);
}
- for (long nA1=0; nA1<36000; nA1+=9000) {
+ for (long nA1=0; nA1<36000; nA1+=9000)
+ {
SdrEscapeDirection nE1 = nA1==0 ? SdrEscapeDirection::RIGHT : nA1==9000 ? SdrEscapeDirection::TOP : nA1==18000 ? SdrEscapeDirection::LEFT : nA1==27000 ? SdrEscapeDirection::BOTTOM : SdrEscapeDirection::SMART;
- for (long nA2=0; nA2<36000; nA2+=9000) {
+ for (long nA2=0; nA2<36000; nA2+=9000)
+ {
SdrEscapeDirection nE2 = nA2==0 ? SdrEscapeDirection::RIGHT : nA2==9000 ? SdrEscapeDirection::TOP : nA2==18000 ? SdrEscapeDirection::LEFT : nA2==27000 ? SdrEscapeDirection::BOTTOM : SdrEscapeDirection::SMART;
- if ((nEsc1&nE1) && (nEsc2&nE2)) {
+ if ((nEsc1&nE1) && (nEsc2&nE2))
+ {
sal_uIntPtr nQual=0;
SdrEdgeInfoRec aInfo;
if (pInfo!=nullptr) aInfo=*pInfo;
XPolygon aXP(ImpCalcEdgeTrack(aPt1,nA1,aBoundRect1,aBewareRect1,aPt2,nA2,aBoundRect2,aBewareRect2,&nQual,&aInfo));
- if (nQual<nBestQual) {
+ if (nQual<nBestQual)
+ {
aBestXP=aXP;
nBestQual=nQual;
aBestInfo=aInfo;
@@ -1581,8 +1618,8 @@ void SdrEdgeObj::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
ImpSetAttrToEdgeInfo(); // when changing templates, copy values from Pool to aEdgeInfo
}
if (bDataChg ||
- (bObj1 && aCon1.pObj->GetPage()==pPage) ||
- (bObj2 && aCon2.pObj->GetPage()==pPage) ||
+ (bObj1 && aCon1.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject()) ||
+ (bObj2 && aCon2.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject()) ||
(pSdrHint && pSdrHint->GetKind()==SdrHintKind::ObjectRemoved))
{
// broadcasting only, if on the same page
@@ -2271,8 +2308,8 @@ void SdrEdgeObj::NbcRotate(const Point& rRef, long nAngle, double sn, double cs)
else
{
// handle start and end point if not connected
- bool bCon1=aCon1.pObj!=nullptr && aCon1.pObj->GetPage()==pPage;
- bool bCon2=aCon2.pObj!=nullptr && aCon2.pObj->GetPage()==pPage;
+ const bool bCon1(nullptr != aCon1.pObj && aCon1.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
+ const bool bCon2(nullptr != aCon2.pObj && aCon2.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
if(!bCon1 && pEdgeTrack)
{
@@ -2302,8 +2339,8 @@ void SdrEdgeObj::NbcMirror(const Point& rRef1, const Point& rRef2)
else
{
// handle start and end point if not connected
- bool bCon1=aCon1.pObj!=nullptr && aCon1.pObj->GetPage()==pPage;
- bool bCon2=aCon2.pObj!=nullptr && aCon2.pObj->GetPage()==pPage;
+ const bool bCon1(nullptr != aCon1.pObj && aCon1.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
+ const bool bCon2(nullptr != aCon2.pObj && aCon2.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
if(!bCon1 && pEdgeTrack)
{
@@ -2333,8 +2370,8 @@ void SdrEdgeObj::NbcShear(const Point& rRef, long nAngle, double tn, bool bVShea
else
{
// handle start and end point if not connected
- bool bCon1=aCon1.pObj!=nullptr && aCon1.pObj->GetPage()==pPage;
- bool bCon2=aCon2.pObj!=nullptr && aCon2.pObj->GetPage()==pPage;
+ const bool bCon1(nullptr != aCon1.pObj && aCon1.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
+ const bool bCon2(nullptr != aCon2.pObj && aCon2.pObj->getSdrPageFromSdrObject() == getSdrPageFromSdrObject());
if(!bCon1 && pEdgeTrack)
{
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index 1f623faeffe9..0c6f2cfb936f 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -981,10 +981,10 @@ void SdrGrafObj::RestGeoData(const SdrObjGeoData& rGeo)
bMirrored=rGGeo.bMirrored;
}
-void SdrGrafObj::SetPage( SdrPage* pNewPage )
+void SdrGrafObj::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- bool bRemove = pNewPage == nullptr && pPage != nullptr;
- bool bInsert = pNewPage != nullptr && pPage == nullptr;
+ const bool bRemove(pNewPage == nullptr && pOldPage != nullptr);
+ const bool bInsert(pNewPage != nullptr && pOldPage == nullptr);
if( bRemove )
{
@@ -996,30 +996,13 @@ void SdrGrafObj::SetPage( SdrPage* pNewPage )
ImpDeregisterLink();
}
- if(!GetStyleSheet() && pNewPage)
- {
- // #i119287# Set default StyleSheet for SdrGrafObj here, it is different from 'Default'. This
- // needs to be done before the style 'Default' is set from the :SetModel() call which is triggered
- // from the following :SetPage().
- // TTTT: Needs to be moved in branch aw080 due to having a SdrModel from the beginning, is at this
- // place for convenience currently (works in both versions, is not in the way)
- SfxStyleSheet* pSheet(pNewPage->getSdrModelFromSdrPage().GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj());
-
- if(pSheet)
- {
- SetStyleSheet(pSheet, false);
- }
- else
- {
- SetMergedItem(XFillStyleItem(drawing::FillStyle_NONE));
- SetMergedItem(XLineStyleItem(drawing::LineStyle_NONE));
- }
- }
-
- SdrRectObj::SetPage( pNewPage );
+ // call parent
+ SdrRectObj::handlePageChange(pOldPage, pNewPage);
if (!aFileName.isEmpty() && bInsert)
+ {
ImpRegisterLink();
+ }
}
void SdrGrafObj::StartAnimation()
diff --git a/svx/source/svdraw/svdogrp.cxx b/svx/source/svdraw/svdogrp.cxx
index 47a71bdb9a31..919909fc3888 100644
--- a/svx/source/svdraw/svdogrp.cxx
+++ b/svx/source/svdraw/svdogrp.cxx
@@ -64,11 +64,9 @@ sdr::contact::ViewContact* SdrObjGroup::CreateObjectSpecificViewContact()
SdrObjGroup::SdrObjGroup(SdrModel& rSdrModel)
: SdrObject(rSdrModel),
- maSdrObjList(),
+ SdrObjList(),
aRefPoint(0, 0)
{
- maSdrObjList.SetOwnerObj(this);
- maSdrObjList.SetListKind(SdrObjListKind::GroupObj);
bClosedObj=false;
}
@@ -76,12 +74,32 @@ SdrObjGroup::~SdrObjGroup()
{
}
+SdrPage* SdrObjGroup::getSdrPageFromSdrObjList() const
+{
+ return getSdrPageFromSdrObject();
+}
+
+SdrObject* SdrObjGroup::getSdrObjectFromSdrObjList() const
+{
+ return const_cast< SdrObjGroup* >(this);
+}
+
+SdrModel& SdrObjGroup::getSdrModelFromSdrObjList() const
+{
+ return getSdrModelFromSdrObject();
+}
+
+SdrObjList* SdrObjGroup::getChildrenOfSdrObject() const
+{
+ return const_cast< SdrObjGroup* >(this);
+}
+
void SdrObjGroup::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
{
rInfo.bNoContortion=false;
- const size_t nObjCount = maSdrObjList.GetObjCount();
+ const size_t nObjCount(GetObjCount());
for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
+ SdrObject* pObj(GetObj(i));
SdrObjTransformInfoRec aInfo;
pObj->TakeObjInfo(aInfo);
if (!aInfo.bMoveAllowed ) rInfo.bMoveAllowed =false;
@@ -140,50 +158,46 @@ SdrLayerID SdrObjGroup::GetLayer() const
{
bool b1st = true;
SdrLayerID nLay = SdrObject::GetLayer();
- const size_t nObjCount = maSdrObjList.GetObjCount();
+ const size_t nObjCount(GetObjCount());
for (size_t i=0; i<nObjCount; ++i) {
- SdrLayerID nLay1=maSdrObjList.GetObj(i)->GetLayer();
+ SdrLayerID nLay1(GetObj(i)->GetLayer());
if (b1st) { nLay=nLay1; b1st = false; }
else if (nLay1!=nLay) return SdrLayerID(0);
}
return nLay;
}
-
void SdrObjGroup::NbcSetLayer(SdrLayerID nLayer)
{
SdrObject::NbcSetLayer(nLayer);
- const size_t nObjCount = maSdrObjList.GetObjCount();
+ const size_t nObjCount(GetObjCount());
for (size_t i=0; i<nObjCount; ++i) {
- maSdrObjList.GetObj(i)->NbcSetLayer(nLayer);
+ GetObj(i)->NbcSetLayer(nLayer);
}
}
-
-void SdrObjGroup::setParentOfSdrObject(SdrObjList* pNewObjList)
+void SdrObjGroup::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- SdrObject::setParentOfSdrObject(pNewObjList);
- maSdrObjList.SetUpList(pNewObjList);
-}
+ // call patrent
+ SdrObject::handlePageChange(pOldPage, pNewPage);
-
-void SdrObjGroup::SetPage(SdrPage* pNewPage)
-{
- SdrObject::SetPage(pNewPage);
- maSdrObjList.SetPage(pNewPage);
+ for(size_t i(0); i < GetObjCount(); i++)
+ {
+ GetObj(i)->handlePageChange(pOldPage, pNewPage);
+ }
}
SdrObjList* SdrObjGroup::GetSubList() const
{
- return const_cast< SdrObjList* >(&maSdrObjList);
+ return const_cast< SdrObjGroup* >(this);
}
const tools::Rectangle& SdrObjGroup::GetCurrentBoundRect() const
{
// <aOutRect> has to contain the bounding rectangle
- if ( maSdrObjList.GetObjCount()!=0 )
+ if(0 != GetObjCount())
{
- const_cast<SdrObjGroup*>(this)->aOutRect = maSdrObjList.GetAllObjBoundRect();
+ const_cast< SdrObjGroup* >(this)->aOutRect = GetAllObjBoundRect();
}
return aOutRect;
@@ -192,9 +206,9 @@ const tools::Rectangle& SdrObjGroup::GetCurrentBoundRect() const
const tools::Rectangle& SdrObjGroup::GetSnapRect() const
{
// <aOutRect> has to contain the bounding rectangle
- if ( maSdrObjList.GetObjCount()!=0 )
+ if(0 != GetObjCount())
{
- return maSdrObjList.GetAllObjSnapRect();
+ return GetAllObjSnapRect();
}
else
{
@@ -221,8 +235,7 @@ SdrObjGroup& SdrObjGroup::operator=(const SdrObjGroup& rObj)
// #i36404# Copy SubList, init model and page first
const SdrObjList& rSourceSubList(*rObj.GetSubList());
- maSdrObjList.SetPage(rSourceSubList.GetPage());
- maSdrObjList.CopyObjects(rSourceSubList);
+ CopyObjects(rSourceSubList);
// tdf#116979: needed here, we need bSnapRectDirty to be true
// which it is after using SdrObject::operator= (see above),
@@ -240,7 +253,7 @@ OUString SdrObjGroup::TakeObjNameSingul() const
{
OUStringBuffer sName;
- if(!maSdrObjList.GetObjCount())
+ if(0 == GetObjCount())
{
sName.append(SvxResId(STR_ObjNameSingulGRUPEMPTY));
}
@@ -265,7 +278,7 @@ OUString SdrObjGroup::TakeObjNameSingul() const
OUString SdrObjGroup::TakeObjNamePlural() const
{
- if (maSdrObjList.GetObjCount()==0)
+ if(0 == GetObjCount())
return SvxResId(STR_ObjNamePluralGRUPEMPTY);
return SvxResId(STR_ObjNamePluralGRUP);
}
@@ -279,11 +292,11 @@ void SdrObjGroup::RecalcSnapRect()
basegfx::B2DPolyPolygon SdrObjGroup::TakeXorPoly() const
{
basegfx::B2DPolyPolygon aRetval;
- const size_t nObjCount(maSdrObjList.GetObjCount());
+ const size_t nObjCount(GetObjCount());
for(size_t a = 0; a < nObjCount; ++a)
{
- SdrObject* pObj = maSdrObjList.GetObj(a);
+ SdrObject* pObj(GetObj(a));
aRetval.append(pObj->TakeXorPoly());
}
@@ -312,9 +325,9 @@ long SdrObjGroup::GetRotateAngle() const
{
long nRetval(0);
- if(maSdrObjList.GetObjCount())
+ if(0 != GetObjCount())
{
- SdrObject* pObj = maSdrObjList.GetObj(0);
+ SdrObject* pObj(GetObj(0));
nRetval = pObj->GetRotateAngle();
}
@@ -327,9 +340,9 @@ long SdrObjGroup::GetShearAngle(bool /*bVertical*/) const
{
long nRetval(0);
- if(maSdrObjList.GetObjCount())
+ if(0 != GetObjCount())
{
- SdrObject* pObj = maSdrObjList.GetObj(0);
+ SdrObject* pObj(GetObj(0));
nRetval = pObj->GetShearAngle();
}
@@ -367,13 +380,18 @@ void SdrObjGroup::NbcSetLogicRect(const tools::Rectangle& rRect)
void SdrObjGroup::NbcMove(const Size& rSiz)
{
aRefPoint.Move(rSiz);
- if (maSdrObjList.GetObjCount()!=0) {
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
+ const size_t nObjCount(GetObjCount());
+
+ if(0 != nObjCount)
+ {
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
pObj->NbcMove(rSiz);
}
- } else {
+ }
+ else
+ {
aOutRect.Move(rSiz);
SetRectsDirty();
}
@@ -397,14 +415,20 @@ void SdrObjGroup::NbcResize(const Point& rRef, const Fraction& xFact, const Frac
NbcMirrorGluePoints(aRef1,aRef2);
}
}
+
ResizePoint(aRefPoint,rRef,xFact,yFact);
- if (maSdrObjList.GetObjCount()!=0) {
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
+
+ const size_t nObjCount(GetObjCount());
+ if(0 != nObjCount)
+ {
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
pObj->NbcResize(rRef,xFact,yFact);
}
- } else {
+ }
+ else
+ {
ResizeRect(aOutRect,rRef,xFact,yFact);
SetRectsDirty();
}
@@ -415,11 +439,14 @@ void SdrObjGroup::NbcRotate(const Point& rRef, long nAngle, double sn, double cs
{
SetGlueReallyAbsolute(true);
RotatePoint(aRefPoint,rRef,sn,cs);
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
pObj->NbcRotate(rRef,nAngle,sn,cs);
}
+
NbcRotateGluePoints(rRef,nAngle,sn,cs);
SetGlueReallyAbsolute(false);
}
@@ -429,11 +456,14 @@ void SdrObjGroup::NbcMirror(const Point& rRef1, const Point& rRef2)
{
SetGlueReallyAbsolute(true);
MirrorPoint(aRefPoint,rRef1,rRef2); // implementation missing in SvdEtc!
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
pObj->NbcMirror(rRef1,rRef2);
}
+
NbcMirrorGluePoints(rRef1,rRef2);
SetGlueReallyAbsolute(false);
}
@@ -443,11 +473,14 @@ void SdrObjGroup::NbcShear(const Point& rRef, long nAngle, double tn, bool bVShe
{
SetGlueReallyAbsolute(true);
ShearPoint(aRefPoint,rRef,tn);
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
pObj->NbcShear(rRef,nAngle,tn,bVShear);
}
+
NbcShearGluePoints(rRef,tn,bVShear);
SetGlueReallyAbsolute(false);
}
@@ -458,9 +491,11 @@ void SdrObjGroup::NbcSetAnchorPos(const Point& rPnt)
aAnchor=rPnt;
Size aSiz(rPnt.X()-aAnchor.X(),rPnt.Y()-aAnchor.Y());
aRefPoint.Move(aSiz);
- const size_t nObjCount=maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
pObj->NbcSetAnchorPos(rPnt);
}
}
@@ -502,18 +537,27 @@ void SdrObjGroup::Move(const Size& rSiz)
if (rSiz.Width()!=0 || rSiz.Height()!=0) {
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
aRefPoint.Move(rSiz);
- if (maSdrObjList.GetObjCount()!=0) {
+ const size_t nObjCount(GetObjCount());
+
+ if(0 != nObjCount)
+ {
// first move the connectors, then everything else
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (pObj->IsEdgeObj()) pObj->Move(rSiz);
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (pObj->IsEdgeObj())
+ pObj->Move(rSiz);
}
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (!pObj->IsEdgeObj()) pObj->Move(rSiz);
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (!pObj->IsEdgeObj())
+ pObj->Move(rSiz);
}
- } else {
+ }
+ else
+ {
aOutRect.Move(rSiz);
SetRectsDirty();
}
@@ -545,18 +589,27 @@ void SdrObjGroup::Resize(const Point& rRef, const Fraction& xFact, const Fractio
}
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
ResizePoint(aRefPoint,rRef,xFact,yFact);
- if (maSdrObjList.GetObjCount()!=0) {
+ const size_t nObjCount(GetObjCount());
+
+ if(0 != nObjCount)
+ {
// move the connectors first, everything else afterwards
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (pObj->IsEdgeObj()) pObj->Resize(rRef,xFact,yFact,bUnsetRelative);
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (pObj->IsEdgeObj())
+ pObj->Resize(rRef,xFact,yFact,bUnsetRelative);
}
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (!pObj->IsEdgeObj()) pObj->Resize(rRef,xFact,yFact,bUnsetRelative);
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (!pObj->IsEdgeObj())
+ pObj->Resize(rRef,xFact,yFact,bUnsetRelative);
}
- } else {
+ }
+ else
+ {
ResizeRect(aOutRect,rRef,xFact,yFact);
SetRectsDirty();
}
@@ -577,15 +630,22 @@ void SdrObjGroup::Rotate(const Point& rRef, long nAngle, double sn, double cs)
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
RotatePoint(aRefPoint,rRef,sn,cs);
// move the connectors first, everything else afterwards
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (pObj->IsEdgeObj()) pObj->Rotate(rRef,nAngle,sn,cs);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (pObj->IsEdgeObj())
+ pObj->Rotate(rRef,nAngle,sn,cs);
}
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (!pObj->IsEdgeObj()) pObj->Rotate(rRef,nAngle,sn,cs);
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (!pObj->IsEdgeObj())
+ pObj->Rotate(rRef,nAngle,sn,cs);
}
+
NbcRotateGluePoints(rRef,nAngle,sn,cs);
SetGlueReallyAbsolute(false);
SetChanged();
@@ -600,15 +660,22 @@ void SdrObjGroup::Mirror(const Point& rRef1, const Point& rRef2)
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
MirrorPoint(aRefPoint,rRef1,rRef2); // implementation missing in SvdEtc!
// move the connectors first, everything else afterwards
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (pObj->IsEdgeObj()) pObj->Mirror(rRef1,rRef2);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (pObj->IsEdgeObj())
+ pObj->Mirror(rRef1,rRef2);
}
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (!pObj->IsEdgeObj()) pObj->Mirror(rRef1,rRef2);
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (!pObj->IsEdgeObj())
+ pObj->Mirror(rRef1,rRef2);
}
+
NbcMirrorGluePoints(rRef1,rRef2);
SetGlueReallyAbsolute(false);
SetChanged();
@@ -626,15 +693,22 @@ void SdrObjGroup::Shear(const Point& rRef, long nAngle, double tn, bool bVShear)
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
ShearPoint(aRefPoint,rRef,tn);
// move the connectors first, everything else afterwards
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (pObj->IsEdgeObj()) pObj->Shear(rRef,nAngle,tn,bVShear);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (pObj->IsEdgeObj())
+ pObj->Shear(rRef,nAngle,tn,bVShear);
}
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (!pObj->IsEdgeObj()) pObj->Shear(rRef,nAngle,tn,bVShear);
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (!pObj->IsEdgeObj())
+ pObj->Shear(rRef,nAngle,tn,bVShear);
}
+
NbcShearGluePoints(rRef,tn,bVShear);
SetGlueReallyAbsolute(false);
SetChanged();
@@ -652,16 +726,24 @@ void SdrObjGroup::SetAnchorPos(const Point& rPnt)
Size aSiz(rPnt.X()-aAnchor.X(),rPnt.Y()-aAnchor.Y());
aRefPoint.Move(aSiz);
// move the connectors first, everything else afterwards
- const size_t nObjCount = maSdrObjList.GetObjCount();
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj=maSdrObjList.GetObj(i);
- if (pObj->IsEdgeObj()) pObj->SetAnchorPos(rPnt);
+ const size_t nObjCount(GetObjCount());
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (pObj->IsEdgeObj())
+ pObj->SetAnchorPos(rPnt);
}
- for (size_t i=0; i<nObjCount; ++i) {
- SdrObject* pObj = maSdrObjList.GetObj(i);
- if (!pObj->IsEdgeObj()) pObj->SetAnchorPos(rPnt);
+
+ for (size_t i=0; i<nObjCount; ++i)
+ {
+ SdrObject* pObj(GetObj(i));
+ if (!pObj->IsEdgeObj())
+ pObj->SetAnchorPos(rPnt);
}
- if (bChg) {
+
+ if (bChg)
+ {
SetChanged();
BroadcastObjectChange();
SendUserCall(SdrUserCallType::MoveOnly,aBoundRect0);
@@ -685,22 +767,23 @@ void SdrObjGroup::SetRelativePos(const Point& rPnt)
void SdrObjGroup::NbcReformatText()
{
- maSdrObjList.NbcReformatAllTextObjects();
+ NbcReformatAllTextObjects();
}
void SdrObjGroup::ReformatText()
{
- maSdrObjList.ReformatAllTextObjects();
+ ReformatAllTextObjects();
}
SdrObject* SdrObjGroup::DoConvertToPolyObj(bool bBezier, bool bAddText) const
{
SdrObject* pGroup = new SdrObjGroup(getSdrModelFromSdrObject());
+ const size_t nObjCount(GetObjCount());
- for(size_t a=0; a<maSdrObjList.GetObjCount(); ++a)
+ for(size_t a=0; a < nObjCount; ++a)
{
- SdrObject* pIterObj = maSdrObjList.GetObj(a);
- SdrObject* pResult = pIterObj->DoConvertToPolyObj(bBezier, bAddText);
+ SdrObject* pIterObj(GetObj(a));
+ SdrObject* pResult(pIterObj->DoConvertToPolyObj(bBezier, bAddText));
// pResult can be NULL e.g. for empty objects
if( pResult )
@@ -716,8 +799,8 @@ void SdrObjGroup::dumpAsXml(xmlTextWriterPtr pWriter) const
xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this);
SdrObject::dumpAsXml(pWriter);
+ SdrObjList::dumpAsXml(pWriter);
- maSdrObjList.dumpAsXml(pWriter);
xmlTextWriterEndElement(pWriter);
}
diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx
index 30a41a8b4cd1..cddbd3285444 100644
--- a/svx/source/svdraw/svdoole2.cxx
+++ b/svx/source/svdraw/svdoole2.cxx
@@ -1238,38 +1238,23 @@ SdrObject* SdrOle2Obj::DoConvertToPolyObj(bool bBezier, bool bAddText) const
return nullptr;
}
-void SdrOle2Obj::SetPage(SdrPage* pNewPage)
+void SdrOle2Obj::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- bool bRemove=pNewPage==nullptr && pPage!=nullptr;
- bool bInsert=pNewPage!=nullptr && pPage==nullptr;
+ const bool bRemove(pNewPage == nullptr && pOldPage != nullptr);
+ const bool bInsert(pNewPage != nullptr && pOldPage == nullptr);
if (bRemove && mpImpl->mbConnected )
- Disconnect();
-
- if(!GetStyleSheet() && pNewPage)
{
- // #i119287# Set default StyleSheet for SdrGrafObj here, it is different from 'Default'. This
- // needs to be done before the style 'Default' is set from the :SetModel() call which is triggered
- // from the following :SetPage().
- // TTTT: Needs to be moved in branch aw080 due to having a SdrModel from the beginning, is at this
- // place for convenience currently (works in both versions, is not in the way)
- SfxStyleSheet* pSheet = pNewPage->getSdrModelFromSdrPage().GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj();
-
- if(pSheet)
- {
- SetStyleSheet(pSheet, false);
- }
- else
- {
- SetMergedItem(XFillStyleItem(drawing::FillStyle_NONE));
- SetMergedItem(XLineStyleItem(drawing::LineStyle_NONE));
- }
+ Disconnect();
}
- SdrRectObj::SetPage(pNewPage);
+ // call parent
+ SdrRectObj::handlePageChange(pOldPage, pNewPage);
if (bInsert && !mpImpl->mbConnected )
+ {
Connect();
+ }
}
void SdrOle2Obj::SetObjRef( const css::uno::Reference < css::embed::XEmbeddedObject >& rNewObjRef )
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 9469e79843a1..41bd67eb19d5 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -452,19 +452,22 @@ bool SdrTextObj::HasTextImpl( SdrOutliner const * pOutliner )
return bRet;
}
-void SdrTextObj::SetPage(SdrPage* pNewPage)
+void SdrTextObj::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)
{
- bool bRemove=pNewPage==nullptr && pPage!=nullptr;
- bool bInsert=pNewPage!=nullptr && pPage==nullptr;
- bool bLinked=IsLinkedText();
+ const bool bRemove(pNewPage == nullptr && pOldPage != nullptr);
+ const bool bInsert(pNewPage != nullptr && pOldPage == nullptr);
+ const bool bLinked(IsLinkedText());
- if (bLinked && bRemove) {
+ if (bLinked && bRemove)
+ {
ImpDeregisterLink();
}
- SdrAttrObj::SetPage(pNewPage);
+ // call parent
+ SdrAttrObj::handlePageChange(pOldPage, pNewPage);
- if (bLinked && bInsert) {
+ if (bLinked && bInsert)
+ {
ImpRegisterLink();
}
}
@@ -1949,7 +1952,7 @@ void ImpUpdateChainLinks(SdrTextObj *pTextObj, OUString const& aNextLinkName)
return;
}
- SdrPage *pPage = pTextObj->GetPage();
+ SdrPage *pPage(pTextObj->getSdrPageFromSdrObject());
assert(pPage);
SdrTextObj *pNextTextObj = dynamic_cast< SdrTextObj * >
(ImpGetObjByName(pPage, aNextLinkName));
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index 75830c864536..0ef85952b253 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -889,7 +889,7 @@ void SdrTextObj::impDecomposeBlockTextPrimitive(
if (drawing::FillStyle_NONE == pBackgroundFillSet->Get(XATTR_FILLSTYLE).GetValue())
{
- SdrPage *pOwnerPage = GetPage();
+ SdrPage* pOwnerPage(getSdrPageFromSdrObject());
if (pOwnerPage)
{
pBackgroundFillSet = &pOwnerPage->getSdrPageProperties().GetItemSet();
@@ -1438,16 +1438,19 @@ void SdrTextObj::impHandleChainingEventsDuringDecomposition(SdrOutliner &rOutlin
TextChainFlow aTxtChainFlow(const_cast<SdrTextObj*>(this));
bool bIsOverflow;
+#ifdef DBG_UTIL
// Some debug output
- size_t nObjCount = pPage->GetObjCount();
- for (size_t i = 0; i < nObjCount; i++) {
- SdrTextObj *pCurObj = static_cast<SdrTextObj *>(pPage->GetObj(i));
-
- if (pCurObj == this) {
+ size_t nObjCount(getSdrPageFromSdrObject()->GetObjCount());
+ for (size_t i = 0; i < nObjCount; i++)
+ {
+ SdrTextObj* pCurObj(dynamic_cast< SdrTextObj* >(getSdrPageFromSdrObject()->GetObj(i)));
+ if(pCurObj == this)
+ {
SAL_INFO("svx.chaining", "Working on TextBox " << i);
break;
}
}
+#endif
aTxtChainFlow.CheckForFlowEvents(&rOutliner);
diff --git a/svx/source/svdraw/svdouno.cxx b/svx/source/svdraw/svdouno.cxx
index 3a1cb78770e8..94bd1cf7492b 100644
--- a/svx/source/svdraw/svdouno.cxx
+++ b/svx/source/svdraw/svdouno.cxx
@@ -485,8 +485,8 @@ uno::Reference< awt::XControl > SdrUnoObj::GetUnoControl(const SdrView& _rView,
uno::Reference< awt::XControl > xControl;
SdrPageView* pPageView = _rView.GetSdrPageView();
- OSL_ENSURE( pPageView && GetPage() == pPageView->GetPage(), "SdrUnoObj::GetUnoControl: This object is not displayed in that particular view!" );
- if ( !pPageView || GetPage() != pPageView->GetPage() )
+ OSL_ENSURE( pPageView && getSdrPageFromSdrObject() == pPageView->GetPage(), "SdrUnoObj::GetUnoControl: This object is not displayed in that particular view!" );
+ if ( !pPageView || getSdrPageFromSdrObject() != pPageView->GetPage() )
return nullptr;
SdrPageWindow* pPageWindow = pPageView->FindPageWindow( _rOut );
diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx
index 1b25b3f7df4f..cf3ae4d41eb9 100644
--- a/svx/source/svdraw/svdpage.cxx
+++ b/svx/source/svdraw/svdpage.cxx
@@ -66,22 +66,28 @@ public:
: ::std::vector<tools::WeakReference<SdrObject>>(nInitialSize) {};
};
-
static const sal_Int32 InitialObjectContainerCapacity (64);
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// helper to allow changing parent at SdrObject, but only from SdrObjList
+
+void SetParentAtSdrObjectFromSdrObjList(SdrObject& rSdrObject, SdrObjList* pNew)
+{
+ rSdrObject.setParentOfSdrObject(pNew);
+}
+
+//////////////////////////////////////////////////////////////////////////////
-SdrObjList::SdrObjList(SdrPage* pNewPage)
+SdrObjList::SdrObjList()
: maList(),
+ maSdrObjListOutRect(),
+ maSdrObjListSnapRect(),
+ mbObjOrdNumsDirty(false),
+ mbRectsDirty(false),
mxNavigationOrder(),
mbIsNavigationOrderDirty(false)
{
maList.reserve(InitialObjectContainerCapacity);
- mpPage=pNewPage;
- pUpList=nullptr;
- bObjOrdNumsDirty=false;
- bRectsDirty=false;
- pOwnerObj=nullptr;
- eListKind=SdrObjListKind::Unknown;
}
void SdrObjList::impClearSdrObjList(bool bBroadcast)
@@ -91,7 +97,7 @@ void SdrObjList::impClearSdrObjList(bool bBroadcast)
while(!maList.empty())
{
// remove last object from list
- SdrObject* pObj = maList.back();
+ SdrObject* pObj(maList.back());
RemoveObjectFromContainer(maList.size()-1);
// flushViewObjectContacts() is done since SdrObject::Free is not guaranteed
@@ -106,7 +112,8 @@ void SdrObjList::impClearSdrObjList(bool bBroadcast)
}
// sent remove hint (after removal, see RemoveObject())
- SdrHint aHint(SdrHintKind::ObjectRemoved, *pObj, mpPage);
+ // TTTT SdrPage not needed, can be accessed using SdrObject
+ SdrHint aHint(SdrHintKind::ObjectRemoved, *pObj, getSdrPageFromSdrObjList());
pObj->getSdrModelFromSdrObject().Broadcast(aHint);
}
@@ -132,12 +139,16 @@ SdrObjList::~SdrObjList()
impClearSdrObjList(false);
}
-void SdrObjList::copyDataFromSdrObjList(const SdrObjList& rSrcList)
+SdrPage* SdrObjList::getSdrPageFromSdrObjList() const
+{
+ // default is no page and returns zero
+ return nullptr;
+}
+
+SdrObject* SdrObjList::getSdrObjectFromSdrObjList() const
{
- // this function is only supposed to be called once, right after construction
- assert(maList.empty());
- eListKind=rSrcList.eListKind;
- CopyObjects(rSrcList);
+ // default is no SdrObject (SdrObjGroup)
+ return nullptr;
}
void SdrObjList::CopyObjects(const SdrObjList& rSrcList)
@@ -145,20 +156,20 @@ void SdrObjList::CopyObjects(const SdrObjList& rSrcList)
// clear SdrObjects with broadcasting
ClearSdrObjList();
- bObjOrdNumsDirty = false;
- bRectsDirty = false;
+ mbObjOrdNumsDirty = false;
+ mbRectsDirty = false;
size_t nCloneErrCnt(0);
const size_t nCount(rSrcList.GetObjCount());
- if(nullptr == GetOwnerObj() && nullptr == GetPage())
+ if(nullptr == getSdrObjectFromSdrObjList() && nullptr == getSdrPageFromSdrObjList())
{
OSL_ENSURE(false, "SdrObjList which is not part of SdrPage or SdrObject (!)");
return;
}
- SdrModel& rTargetSdrModel(nullptr == GetOwnerObj()
- ? GetPage()->getSdrModelFromSdrPage()
- : GetOwnerObj()->getSdrModelFromSdrObject());
+ SdrModel& rTargetSdrModel(nullptr == getSdrObjectFromSdrObjList()
+ ? getSdrPageFromSdrObjList()->getSdrModelFromSdrPage()
+ : getSdrObjectFromSdrObjList()->getSdrModelFromSdrObject());
for (size_t no(0); no < nCount; ++no)
{
@@ -167,7 +178,6 @@ void SdrObjList::CopyObjects(const SdrObjList& rSrcList)
if(nullptr != pDO)
{
- pDO->SetPage(mpPage);
NbcInsertObject(pDO, SAL_MAX_SIZE);
}
else
@@ -242,23 +252,6 @@ void SdrObjList::CopyObjects(const SdrObjList& rSrcList)
}
}
-SdrPage* SdrObjList::GetPage() const
-{
- return mpPage;
-}
-
-void SdrObjList::SetPage(SdrPage* pNewPage)
-{
- if (mpPage!=pNewPage) {
- mpPage=pNewPage;
- const size_t nCount = GetObjCount();
- for (size_t no=0; no<nCount; ++no) {
- SdrObject* pObj=GetObj(no);
- pObj->SetPage(mpPage);
- }
- }
-}
-
void SdrObjList::RecalcObjOrdNums()
{
const size_t nCount = GetObjCount();
@@ -266,30 +259,35 @@ void SdrObjList::RecalcObjOrdNums()
SdrObject* pObj=GetObj(no);
pObj->SetOrdNum(no);
}
- bObjOrdNumsDirty=false;
+ mbObjOrdNumsDirty=false;
}
void SdrObjList::RecalcRects()
{
- maOutRect=tools::Rectangle();
- aSnapRect=maOutRect;
+ maSdrObjListOutRect=tools::Rectangle();
+ maSdrObjListSnapRect=maSdrObjListOutRect;
const size_t nCount = GetObjCount();
for (size_t i=0; i<nCount; ++i) {
SdrObject* pObj=GetObj(i);
if (i==0) {
- maOutRect=pObj->GetCurrentBoundRect();
- aSnapRect=pObj->GetSnapRect();
+ maSdrObjListOutRect=pObj->GetCurrentBoundRect();
+ maSdrObjListSnapRect=pObj->GetSnapRect();
} else {
- maOutRect.Union(pObj->GetCurrentBoundRect());
- aSnapRect.Union(pObj->GetSnapRect());
+ maSdrObjListOutRect.Union(pObj->GetCurrentBoundRect());
+ maSdrObjListSnapRect.Union(pObj->GetSnapRect());
}
}
}
-void SdrObjList::SetRectsDirty()
+void SdrObjList::SetSdrObjListRectsDirty()
{
- bRectsDirty=true;
- if (pUpList!=nullptr) pUpList->SetRectsDirty();
+ mbRectsDirty=true;
+ SdrObject* pParentSdrObject(getSdrObjectFromSdrObjList());
+
+ if(nullptr != pParentSdrObject)
+ {
+ pParentSdrObject->SetRectsDirty();
+ }
}
void SdrObjList::impChildInserted(SdrObject const & rChild)
@@ -313,18 +311,17 @@ void SdrObjList::NbcInsertObject(SdrObject* pObj, size_t nPos)
if (nPos>nCount) nPos=nCount;
InsertObjectIntoContainer(*pObj,nPos);
- if (nPos<nCount) bObjOrdNumsDirty=true;
+ if (nPos<nCount) mbObjOrdNumsDirty=true;
pObj->SetOrdNum(nPos);
- pObj->setParentOfSdrObject(this);
- pObj->SetPage(mpPage);
+ SetParentAtSdrObjectFromSdrObjList(*pObj, this);
// Inform the parent about change to allow invalidations at
// evtl. existing parent visualisations
impChildInserted(*pObj);
- if (!bRectsDirty) {
- maOutRect.Union(pObj->GetCurrentBoundRect());
- aSnapRect.Union(pObj->GetSnapRect());
+ if (!mbRectsDirty) {
+ maSdrObjListOutRect.Union(pObj->GetCurrentBoundRect());
+ maSdrObjListSnapRect.Union(pObj->GetSnapRect());
}
pObj->SetInserted(true); // calls the UserCall (among others)
}
@@ -336,7 +333,7 @@ void SdrObjList::InsertObject(SdrObject* pObj, size_t nPos)
if(pObj)
{
// if anchor is used, reset it before grouping
- if(GetOwnerObj())
+ if(getSdrObjectFromSdrObjList())
{
const Point& rAnchorPos = pObj->GetAnchorPos();
if(rAnchorPos.X() || rAnchorPos.Y())
@@ -348,15 +345,17 @@ void SdrObjList::InsertObject(SdrObject* pObj, size_t nPos)
// In case the object is inserted into a group and doesn't overlap with
// the group's other members, it needs an own repaint.
- if(pOwnerObj)
+ SdrObject* pParentSdrObject(getSdrObjectFromSdrObjList());
+
+ if(pParentSdrObject)
{
// only repaint here
- pOwnerObj->ActionChanged();
+ pParentSdrObject->ActionChanged();
}
// TODO: We need a different broadcast here!
// Repaint from object number ... (heads-up: GroupObj)
- if(pObj->GetPage())
+ if(pObj->getSdrPageFromSdrObject())
{
SdrHint aHint(SdrHintKind::ObjectInserted, *pObj);
pObj->getSdrModelFromSdrObject().Broadcast(aHint);
@@ -379,20 +378,22 @@ SdrObject* SdrObjList::NbcRemoveObject(size_t nObjNum)
RemoveObjectFromContainer(nObjNum);
DBG_ASSERT(pObj!=nullptr,"Could not find object to remove.");
- if (pObj!=nullptr) {
+ if (pObj!=nullptr)
+ {
// flushViewObjectContacts() clears the VOC's and those invalidate
pObj->GetViewContact().flushViewObjectContacts();
DBG_ASSERT(pObj->IsInserted(),"The object does not have the status Inserted.");
pObj->SetInserted(false); // calls UserCall, among other
- pObj->setParentOfSdrObject(nullptr);
- pObj->SetPage(nullptr);
- if (!bObjOrdNumsDirty) { // optimizing for the case that the last object has to be removed
+ SetParentAtSdrObjectFromSdrObjList(*pObj, nullptr);
+ if (!mbObjOrdNumsDirty)
+ {
+ // optimizing for the case that the last object has to be removed
if (nObjNum+1!=nCount) {
- bObjOrdNumsDirty=true;
+ mbObjOrdNumsDirty=true;
}
}
- SetRectsDirty();
+ SetSdrObjListRectsDirty();
}
return pObj;
}
@@ -417,7 +418,7 @@ SdrObject* SdrObjList::RemoveObject(size_t nObjNum)
DBG_ASSERT(pObj->IsInserted(),"The object does not have the status Inserted.");
// TODO: We need a different broadcast here.
- if (pObj->GetPage()!=nullptr)
+ if (pObj->getSdrPageFromSdrObject()!=nullptr)
{
SdrHint aHint(SdrHintKind::ObjectRemoved, *pObj);
pObj->getSdrModelFromSdrObject().Broadcast(aHint);
@@ -426,20 +427,24 @@ SdrObject* SdrObjList::RemoveObject(size_t nObjNum)
pObj->getSdrModelFromSdrObject().SetChanged();
pObj->SetInserted(false); // calls, among other things, the UserCall
- pObj->setParentOfSdrObject(nullptr);
- pObj->SetPage(nullptr);
- if (!bObjOrdNumsDirty) { // optimization for the case that the last object is removed
+ SetParentAtSdrObjectFromSdrObjList(*pObj, nullptr);
+
+ if (!mbObjOrdNumsDirty)
+ {
+ // optimization for the case that the last object is removed
if (nObjNum+1!=nCount) {
- bObjOrdNumsDirty=true;
+ mbObjOrdNumsDirty=true;
}
}
- SetRectsDirty();
- if(pOwnerObj && !GetObjCount())
+ SetSdrObjListRectsDirty();
+ SdrObject* pParentSdrObject(getSdrObjectFromSdrObjList());
+
+ if(pParentSdrObject && !GetObjCount())
{
// empty group created; it needs to be repainted since it's
// visualization changes
- pOwnerObj->ActionChanged();
+ pParentSdrObject->ActionChanged();
}
}
return pObj;
@@ -459,23 +464,21 @@ SdrObject* SdrObjList::NbcReplaceObject(SdrObject* pNewObj, size_t nObjNum)
if (pObj!=nullptr) {
DBG_ASSERT(pObj->IsInserted(),"SdrObjList::ReplaceObject: the object does not have status Inserted.");
pObj->SetInserted(false);
- pObj->setParentOfSdrObject(nullptr);
- pObj->SetPage(nullptr);
+ SetParentAtSdrObjectFromSdrObjList(*pObj, nullptr);
ReplaceObjectInContainer(*pNewObj,nObjNum);
// flushViewObjectContacts() clears the VOC's and those invalidate
pObj->GetViewContact().flushViewObjectContacts();
pNewObj->SetOrdNum(nObjNum);
- pNewObj->setParentOfSdrObject(this);
- pNewObj->SetPage(mpPage);
+ SetParentAtSdrObjectFromSdrObjList(*pNewObj, this);
// Inform the parent about change to allow invalidations at
// evtl. existing parent visualisations
impChildInserted(*pNewObj);
pNewObj->SetInserted(true);
- SetRectsDirty();
+ SetSdrObjListRectsDirty();
}
return pObj;
}
@@ -499,23 +502,21 @@ SdrObject* SdrObjList::ReplaceObject(SdrObject* pNewObj, size_t nObjNum)
DBG_ASSERT(pObj->IsInserted(),"SdrObjList::ReplaceObject: the object does not have status Inserted.");
// TODO: We need a different broadcast here.
- if (pObj->GetPage()!=nullptr)
+ if (pObj->getSdrPageFromSdrObject()!=nullptr)
{
SdrHint aHint(SdrHintKind::ObjectRemoved, *pObj);
pObj->getSdrModelFromSdrObject().Broadcast(aHint);
}
pObj->SetInserted(false);
- pObj->setParentOfSdrObject(nullptr);
- pObj->SetPage(nullptr);
+ SetParentAtSdrObjectFromSdrObjList(*pObj, nullptr);
ReplaceObjectInContainer(*pNewObj,nObjNum);
// flushViewObjectContacts() clears the VOC's and those invalidate
pObj->GetViewContact().flushViewObjectContacts();
pNewObj->SetOrdNum(nObjNum);
- pNewObj->setParentOfSdrObject(this);
- pNewObj->SetPage(mpPage);
+ SetParentAtSdrObjectFromSdrObjList(*pNewObj, this);
// Inform the parent about change to allow invalidations at
// evtl. existing parent visualisations
@@ -524,14 +525,14 @@ SdrObject* SdrObjList::ReplaceObject(SdrObject* pNewObj, size_t nObjNum)
pNewObj->SetInserted(true);
// TODO: We need a different broadcast here.
- if (pNewObj->GetPage()!=nullptr) {
+ if (pNewObj->getSdrPageFromSdrObject()!=nullptr) {
SdrHint aHint(SdrHintKind::ObjectInserted, *pNewObj);
pNewObj->getSdrModelFromSdrObject().Broadcast(aHint);
}
pNewObj->getSdrModelFromSdrObject().SetChanged();
- SetRectsDirty();
+ SetSdrObjListRectsDirty();
}
return pObj;
}
@@ -558,10 +559,10 @@ SdrObject* SdrObjList::SetObjectOrdNum(size_t nOldObjNum, size_t nNewObjNum)
pObj->ActionChanged();
pObj->SetOrdNum(nNewObjNum);
- bObjOrdNumsDirty=true;
+ mbObjOrdNumsDirty=true;
// TODO: We need a different broadcast here.
- if (pObj->GetPage()!=nullptr)
+ if (pObj->getSdrPageFromSdrObject()!=nullptr)
pObj->getSdrModelFromSdrObject().Broadcast(SdrHint(SdrHintKind::ObjectChange, *pObj));
pObj->getSdrModelFromSdrObject().SetChanged();
}
@@ -570,11 +571,11 @@ SdrObject* SdrObjList::SetObjectOrdNum(size_t nOldObjNum, size_t nNewObjNum)
const tools::Rectangle& SdrObjList::GetAllObjSnapRect() const
{
- if (bRectsDirty) {
+ if (mbRectsDirty) {
const_cast<SdrObjList*>(this)->RecalcRects();
- const_cast<SdrObjList*>(this)->bRectsDirty=false;
+ const_cast<SdrObjList*>(this)->mbRectsDirty=false;
}
- return aSnapRect;
+ return maSdrObjListSnapRect;
}
const tools::Rectangle& SdrObjList::GetAllObjBoundRect() const
@@ -582,14 +583,14 @@ const tools::Rectangle& SdrObjList::GetAllObjBoundRect() const
// #i106183# for deep group hierarchies like in chart2, the invalidates
// through the hierarchy are not correct; use a 2nd hint for the needed
// recalculation. Future versions will have no bool flag at all, but
- // just maOutRect in empty state to represent an invalid state, thus
+ // just maSdrObjListOutRect in empty state to represent an invalid state, thus
// it's a step in the right direction.
- if (bRectsDirty || maOutRect.IsEmpty())
+ if (mbRectsDirty || maSdrObjListOutRect.IsEmpty())
{
const_cast<SdrObjList*>(this)->RecalcRects();
- const_cast<SdrObjList*>(this)->bRectsDirty=false;
+ const_cast<SdrObjList*>(this)->mbRectsDirty=false;
}
- return maOutRect;
+ return maSdrObjListOutRect;
}
void SdrObjList::NbcReformatAllTextObjects()
@@ -620,7 +621,7 @@ void SdrObjList::ReformatAllTextObjects()
void SdrObjList::ReformatAllEdgeObjects()
{
// #i120437# go over whole hierarchy, not only over object level null (seen from grouping)
- SdrObjListIter aIter(*this, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(this, SdrIterMode::DeepNoGroups);
while(aIter.IsMore())
{
@@ -661,8 +662,19 @@ SdrObject* SdrObjList::GetObj(size_t nNum) const
bool SdrObjList::IsReadOnly() const
{
- bool bRet = false;
- if (mpPage!=nullptr && mpPage!=this) bRet=mpPage->IsReadOnly();
+ bool bRet(false);
+ SdrObject* pParentSdrObject(getSdrObjectFromSdrObjList());
+
+ if(nullptr != pParentSdrObject)
+ {
+ SdrPage* pSdrPage(pParentSdrObject->getSdrPageFromSdrObject());
+
+ if(nullptr != pSdrPage)
+ {
+ bRet = pSdrPage->IsReadOnly();
+ }
+ }
+
return bRet;
}
@@ -847,7 +859,9 @@ void SdrObjList::SetNavigationOrder (const uno::Reference<container::XIndexAcces
mbIsNavigationOrderDirty = true;
}
else
+ {
ClearObjectNavigationOrder();
+ }
}
@@ -873,7 +887,7 @@ void SdrObjList::InsertObjectIntoContainer (
maList.push_back(&rObject);
else
maList.insert(maList.begin()+nInsertPosition, &rObject);
- bObjOrdNumsDirty=true;
+ mbObjOrdNumsDirty=true;
}
@@ -908,7 +922,7 @@ void SdrObjList::ReplaceObjectInContainer (
}
maList[nObjectPosition] = &rNewObject;
- bObjOrdNumsDirty=true;
+ mbObjOrdNumsDirty=true;
}
@@ -935,7 +949,7 @@ void SdrObjList::RemoveObjectFromContainer (
}
maList.erase(maList.begin()+nObjectPosition);
- bObjOrdNumsDirty=true;
+ mbObjOrdNumsDirty=true;
}
void SdrObjList::dumpAsXml(xmlTextWriterPtr pWriter) const
@@ -1118,7 +1132,7 @@ void SdrPageProperties::SetStyleSheet(SfxStyleSheet* pStyleSheet)
SdrPage::SdrPage(SdrModel& rModel, bool bMasterPage)
: tools::WeakBase(),
- SdrObjList(this),
+ SdrObjList(),
maPageUsers(),
mpViewContact(nullptr),
mrSdrModelFromSdrPage(rModel),
@@ -1140,8 +1154,6 @@ SdrPage::SdrPage(SdrModel& rModel, bool bMasterPage)
mbPageBorderOnlyLeftRight(false)
{
aPrefVisiLayers.SetAll();
- eListKind = bMasterPage ? SdrObjListKind::MasterPage : SdrObjListKind::DrawPage;
-
mpSdrPageProperties.reset(new SdrPageProperties(*this));
}
@@ -1182,11 +1194,14 @@ SdrPage::~SdrPage()
mpSdrPageProperties.reset();
}
+SdrModel& SdrPage::getSdrModelFromSdrObjList() const
+{
+ return getSdrModelFromSdrPage();
+}
+
void SdrPage::lateInit(const SdrPage& rSrcPage)
{
assert(!mpViewContact);
- // SdrPageProperties get set by SdrPage::SdrPage already, so do not assert anymore
- // assert(!mpSdrPageProperties);
assert(!mxUnoPage.is());
// copy all the local parameters to make this instance
@@ -1227,11 +1242,10 @@ void SdrPage::lateInit(const SdrPage& rSrcPage)
}
// Now copy the contained objects
- SdrObjList::copyDataFromSdrObjList(rSrcPage);
-
- // be careful and correct eListKind, a member of SdrObjList which
- // will be changed by the SdrObjList::lateInit before...
- eListKind = (mbMaster) ? SdrObjListKind::MasterPage : SdrObjListKind::DrawPage;
+ if(0 != rSrcPage.GetObjCount())
+ {
+ CopyObjects(rSrcPage);
+ }
}
SdrPage* SdrPage::CloneSdrPage(SdrModel& rTargetModel) const
@@ -1424,6 +1438,10 @@ void SdrPage::SetChanged()
getSdrModelFromSdrPage().SetChanged();
}
+SdrPage* SdrPage::getSdrPageFromSdrObjList() const
+{
+ return const_cast< SdrPage* >(this);
+}
// MasterPage interface
@@ -1515,7 +1533,7 @@ void SdrPage::SetInserted( bool bIns )
mbInserted = bIns;
// #i120437# go over whole hierarchy, not only over object level null (seen from grouping)
- SdrObjListIter aIter(*this, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(this, SdrIterMode::DeepNoGroups);
while ( aIter.IsMore() )
{
diff --git a/svx/source/svdraw/svdpagv.cxx b/svx/source/svdraw/svdpagv.cxx
index 76d30c43d145..b5052c422502 100644
--- a/svx/source/svdraw/svdpagv.cxx
+++ b/svx/source/svdraw/svdpagv.cxx
@@ -665,8 +665,12 @@ bool SdrPageView::IsObjMarkable(SdrObject const * pObj) const
return true;
}
}
- if (!pObj->Is3DObj() && pObj->GetPage()!=GetPage())
- return false; // Obj suddenly in different Page
+ if (!pObj->Is3DObj() && pObj->getSdrPageFromSdrObject() != GetPage())
+ {
+ // Obj suddenly in different Page
+ return false;
+ }
+
// the layer has to be visible and must not be locked
SdrLayerID nL = pObj->GetLayer();
if (!aLayerVisi.IsSet(nL))
@@ -901,7 +905,7 @@ void SdrPageView::CheckCurrentGroup()
SdrObject* pGrp(GetCurrentGroup());
while(nullptr != pGrp &&
- (!pGrp->IsInserted() || nullptr == pGrp->getParentOfSdrObject() || nullptr == pGrp->GetPage()))
+ (!pGrp->IsInserted() || nullptr == pGrp->getParentOfSdrObject() || nullptr == pGrp->getSdrPageFromSdrObject()))
{
// anything outside of the borders?
pGrp = pGrp->GetUpGroup();
diff --git a/svx/source/svdraw/svdsnpv.cxx b/svx/source/svdraw/svdsnpv.cxx
index 10aacc3f87fd..1dc96f0c6a51 100644
--- a/svx/source/svdraw/svdsnpv.cxx
+++ b/svx/source/svdraw/svdsnpv.cxx
@@ -325,7 +325,7 @@ SdrSnap SdrSnapView::SnapPos(Point& rPnt, const SdrPageView* pPV) const
sal_uInt32 nMaxFrameSnapCount=200;
// go back to SdrIterMode::DeepNoGroups runthrough for snap to object comparisons
- SdrObjListIter aIter(*pPV->GetPage(),SdrIterMode::DeepNoGroups,true);
+ SdrObjListIter aIter(pPV->GetPage(),SdrIterMode::DeepNoGroups,true);
while (aIter.IsMore() && (nMaxPointSnapCount>0 || nMaxFrameSnapCount>0)) {
SdrObject* pO=aIter.Next();
diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx
index c08bd7785e38..b70efa10699c 100644
--- a/svx/source/svdraw/svdundo.cxx
+++ b/svx/source/svdraw/svdundo.cxx
@@ -237,9 +237,9 @@ void SdrUndoObj::ImpTakeDescriptionStr(const char* pStrCacheID, OUString& rStr,
// common call method for possible change of the page when UNDO/REDO is triggered
void SdrUndoObj::ImpShowPageOfThisObject()
{
- if(pObj && pObj->IsInserted() && pObj->GetPage())
+ if(pObj && pObj->IsInserted() && pObj->getSdrPageFromSdrObject())
{
- SdrHint aHint(SdrHintKind::SwitchToPage, *pObj, pObj->GetPage());
+ SdrHint aHint(SdrHintKind::SwitchToPage, *pObj, pObj->getSdrPageFromSdrObject());
pObj->getSdrModelFromSdrObject().Broadcast(aHint);
}
}
@@ -700,12 +700,12 @@ void SdrUndoRemoveObj::Undo()
// position of the target object.
Point aOwnerAnchorPos(0, 0);
- if (dynamic_cast<const SdrObjGroup*>(pObjList->GetOwnerObj()) != nullptr)
+ if (dynamic_cast< const SdrObjGroup* >(pObjList->getSdrObjectFromSdrObjList()) != nullptr)
{
- aOwnerAnchorPos = pObjList->GetOwnerObj()->GetAnchorPos();
+ aOwnerAnchorPos = pObjList->getSdrObjectFromSdrObjList()->GetAnchorPos();
}
- E3DModifySceneSnapRectUpdater aUpdater(pObjList->GetOwnerObj());
+ E3DModifySceneSnapRectUpdater aUpdater(pObjList->getSdrObjectFromSdrObjList());
pObjList->InsertObject(pObj,nOrdNum);
// #i11426#
@@ -759,7 +759,8 @@ void SdrUndoInsertObj::Redo()
// which becomes a member of a group, because its cleared in method
// <InsertObject(..)>. Needed for correct Redo in Writer. (#i45952#)
Point aAnchorPos( 0, 0 );
- if (dynamic_cast<const SdrObjGroup*>(pObjList->GetOwnerObj()) != nullptr)
+
+ if (dynamic_cast<const SdrObjGroup*>(pObjList->getSdrObjectFromSdrObjList()) != nullptr)
{
aAnchorPos = pObj->GetAnchorPos();
}
diff --git a/svx/source/svdraw/svdviter.cxx b/svx/source/svdraw/svdviter.cxx
index d77f7a3780fc..1d4c9b035661 100644
--- a/svx/source/svdraw/svdviter.cxx
+++ b/svx/source/svdraw/svdviter.cxx
@@ -48,7 +48,7 @@ SdrViewIter::SdrViewIter(const SdrObject* pObject)
{
mpObject = pObject;
mpModel = pObject ? &pObject->getSdrModelFromSdrObject() : nullptr;
- mpPage = pObject ? pObject->GetPage() : nullptr;
+ mpPage = pObject ? pObject->getSdrPageFromSdrObject() : nullptr;
if(!mpModel || !mpPage)
{
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index 67ec4033ae96..f549df42426e 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -115,7 +115,7 @@ bool SdrExchangeView::ImpGetPasteLayer(const SdrObjList* pObjList, SdrLayerID& r
bool bRet=false;
rLayer=SdrLayerID(0);
if (pObjList!=nullptr) {
- const SdrPage* pPg=pObjList->GetPage();
+ const SdrPage* pPg=pObjList->getSdrPageFromSdrObjList();
if (pPg!=nullptr) {
rLayer=pPg->GetLayerAdmin().GetLayerID(maActualLayer);
if (rLayer==SDRLAYER_NOTFOUND) rLayer=SdrLayerID(0);
@@ -142,7 +142,7 @@ bool SdrExchangeView::Paste(const OUString& rStr, const Point& rPos, SdrObjList*
bool bUnmark = (nOptions & (SdrInsertFlags::DONTMARK|SdrInsertFlags::ADDMARK))==SdrInsertFlags::NONE && !IsTextEdit();
if (bUnmark) UnmarkAllObj();
tools::Rectangle aTextRect(0,0,500,500);
- SdrPage* pPage=pLst->GetPage();
+ SdrPage* pPage=pLst->getSdrPageFromSdrObjList();
if (pPage!=nullptr) {
aTextRect.SetSize(pPage->GetSize());
}
@@ -182,7 +182,7 @@ bool SdrExchangeView::Paste(SvStream& rInput, EETextFormat eFormat, const Point&
bool bUnmark=(nOptions&(SdrInsertFlags::DONTMARK|SdrInsertFlags::ADDMARK))==SdrInsertFlags::NONE && !IsTextEdit();
if (bUnmark) UnmarkAllObj();
tools::Rectangle aTextRect(0,0,500,500);
- SdrPage* pPage=pLst->GetPage();
+ SdrPage* pPage=pLst->getSdrPageFromSdrObjList();
if (pPage!=nullptr) {
aTextRect.SetSize(pPage->GetSize());
}
@@ -320,10 +320,9 @@ bool SdrExchangeView::Paste(
}
// #i39861#
- pNewObj->SetPage(pDstLst->GetPage());
pNewObj->NbcMove(aSiz);
- const SdrPage* pPg = pDstLst->GetPage();
+ const SdrPage* pPg = pDstLst->getSdrPageFromSdrObjList();
if(pPg)
{
@@ -702,7 +701,7 @@ void SdrExchangeView::DrawMarkedObj(OutputDevice& rOut) const
if(aSdrObjects.size())
{
- sdr::contact::ObjectContactOfObjListPainter aPainter(rOut, aSdrObjects, aSdrObjects[0]->GetPage());
+ sdr::contact::ObjectContactOfObjListPainter aPainter(rOut, aSdrObjects, aSdrObjects[0]->getSdrPageFromSdrObject());
sdr::contact::DisplayInfo aDisplayInfo;
// do processing
@@ -755,7 +754,6 @@ SdrModel* SdrExchangeView::GetMarkedObjModel() const
if(pNewObj)
{
- pNewObj->SetPage(pNewPage);
pNewPage->InsertObject(pNewObj, SAL_MAX_SIZE);
// #i13033#
diff --git a/svx/source/table/tablecontroller.cxx b/svx/source/table/tablecontroller.cxx
index 3241f2c7d304..284493ac78fd 100644
--- a/svx/source/table/tablecontroller.cxx
+++ b/svx/source/table/tablecontroller.cxx
@@ -1878,7 +1878,7 @@ void SvxTableController::EditCell(const CellPos& rPos, vcl::Window* pWindow, Tbl
SdrTableObj& rTableObj(*mxTableObj.get());
- if(rTableObj.GetPage() == pPV->GetPage())
+ if(rTableObj.getSdrPageFromSdrObject() == pPV->GetPage())
{
bool bEmptyOutliner = false;
diff --git a/svx/source/unodraw/UnoGraphicExporter.cxx b/svx/source/unodraw/UnoGraphicExporter.cxx
index 11337bb12195..2f7d8085c084 100644
--- a/svx/source/unodraw/UnoGraphicExporter.cxx
+++ b/svx/source/unodraw/UnoGraphicExporter.cxx
@@ -302,8 +302,11 @@ drawinglayer::primitive2d::Primitive2DContainer ImplExportCheckVisisbilityRedire
if(pObject)
{
SdrPage* pPage = mpCurrentPage;
- if( pPage == nullptr )
- pPage = pObject->GetPage();
+
+ if(nullptr == pPage)
+ {
+ pPage = pObject->getSdrPageFromSdrObject();
+ }
if( (pPage == nullptr) || pPage->checkVisibility(rOriginal, rDisplayInfo, false) )
{
@@ -1181,7 +1184,7 @@ void SAL_CALL GraphicExporter::setSourceDocument( const Reference< lang::XCompon
{
mxShapes->getByIndex( nIndex ) >>= xShape;
pObj = GetSdrObjectFromXShape( xShape );
- bOk = pObj && pObj->GetPage() == pPage;
+ bOk = pObj && pObj->getSdrPageFromSdrObject() == pPage;
}
if( !bOk )
diff --git a/svx/source/unodraw/unopage.cxx b/svx/source/unodraw/unopage.cxx
index d77df5f01276..8f252456b107 100644
--- a/svx/source/unodraw/unopage.cxx
+++ b/svx/source/unodraw/unopage.cxx
@@ -510,7 +510,6 @@ SdrObject* SvxDrawPage::CreateSdrObject_(const Reference< drawing::XShape > & xS
*mpModel,
nInventor,
nType,
- mpPage,
&aRect);
if (!pNewObj)
diff --git a/svx/source/unodraw/unoshap2.cxx b/svx/source/unodraw/unoshap2.cxx
index fbed04557448..22bf9eecf25f 100644
--- a/svx/source/unodraw/unoshap2.cxx
+++ b/svx/source/unodraw/unoshap2.cxx
@@ -243,7 +243,7 @@ void SAL_CALL SvxShapeGroup::remove( const uno::Reference< drawing::XShape >& xS
if( pShape )
pSdrShape = pShape->GetSdrObject();
- if( !HasSdrObject() || pSdrShape == nullptr || pSdrShape->getParentOfSdrObject()->GetOwnerObj() != GetSdrObject() )
+ if( !HasSdrObject() || pSdrShape == nullptr || pSdrShape->getParentOfSdrObject()->getSdrObjectFromSdrObjList() != GetSdrObject() )
throw uno::RuntimeException();
SdrObjList& rList = *pSdrShape->getParentOfSdrObject();
diff --git a/svx/source/unodraw/unoshap3.cxx b/svx/source/unodraw/unoshap3.cxx
index 9f694bd8a130..3988d6654a33 100644
--- a/svx/source/unodraw/unoshap3.cxx
+++ b/svx/source/unodraw/unoshap3.cxx
@@ -150,7 +150,7 @@ void SAL_CALL Svx3DSceneObject::remove( const Reference< drawing::XShape >& xSha
throw uno::RuntimeException();
SdrObject* pSdrShape = pShape->GetSdrObject();
- if(pSdrShape == nullptr || pSdrShape->getParentOfSdrObject()->GetOwnerObj() != GetSdrObject())
+ if(pSdrShape == nullptr || pSdrShape->getParentOfSdrObject()->getSdrObjectFromSdrObjList() != GetSdrObject())
{
throw uno::RuntimeException();
}
@@ -280,7 +280,7 @@ bool Svx3DSceneObject::setPropertyValueImpl( const OUString& rName, const SfxIte
aSceneTAR.maRect = pScene->GetSnapRect();
// rescue object transformations
- SdrObjListIter aIter(*pScene->GetSubList(), SdrIterMode::DeepWithGroups);
+ SdrObjListIter aIter(pScene->GetSubList(), SdrIterMode::DeepWithGroups);
std::vector<basegfx::B3DHomMatrix*> aObjTrans;
while(aIter.IsMore())
{
diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx
index 1ea93dde6d34..12d8b49765fc 100644
--- a/svx/source/unodraw/unoshape.cxx
+++ b/svx/source/unodraw/unoshape.cxx
@@ -691,12 +691,12 @@ uno::Any SvxShape::GetBitmap( bool bMetaFile /* = false */ ) const
DBG_TESTSOLARMUTEX();
uno::Any aAny;
- if( !HasSdrObject() || !GetSdrObject()->IsInserted() || nullptr == GetSdrObject()->GetPage() )
+ if( !HasSdrObject() || !GetSdrObject()->IsInserted() || nullptr == GetSdrObject()->getSdrPageFromSdrObject() )
return aAny;
ScopedVclPtrInstance< VirtualDevice > pVDev;
pVDev->SetMapMode(MapMode(MapUnit::Map100thMM));
- SdrPage* pPage = GetSdrObject()->GetPage();
+ SdrPage* pPage = GetSdrObject()->getSdrPageFromSdrObject();
std::unique_ptr<E3dView> pView(
new E3dView(
@@ -1342,13 +1342,13 @@ void SAL_CALL SvxShape::dispose()
EndListening( GetSdrObject()->getSdrModelFromSdrObject() );
bool bFreeSdrObject = false;
- if ( GetSdrObject()->IsInserted() && GetSdrObject()->GetPage() )
+ if ( GetSdrObject()->IsInserted() && GetSdrObject()->getSdrPageFromSdrObject() )
{
OSL_ENSURE( HasSdrObjectOwnership(), "SvxShape::dispose: is the below code correct?" );
// normally, we are allowed to free the SdrObject only if we have its ownership.
// Why isn't this checked here?
- SdrPage* pPage = GetSdrObject()->GetPage();
+ SdrPage* pPage = GetSdrObject()->getSdrPageFromSdrObject();
// delete the SdrObject from the page
const size_t nCount = pPage->GetObjCount();
for ( size_t nNum = 0; nNum < nCount; ++nNum )
@@ -3738,28 +3738,47 @@ uno::Reference< container::XIndexContainer > SAL_CALL SvxShape::getGluePoints()
uno::Reference<uno::XInterface> SAL_CALL SvxShape::getParent()
{
::SolarMutexGuard aGuard;
+ const SdrObject* pSdrObject(GetSdrObject());
- if( HasSdrObject() && GetSdrObject()->getParentOfSdrObject() )
+ if(nullptr != pSdrObject)
{
- SdrObjList* pObjList = GetSdrObject()->getParentOfSdrObject();
+ const SdrObjList* pParentSdrObjList(GetSdrObject()->getParentOfSdrObject());
- switch (pObjList->GetListKind())
+ if(nullptr != pParentSdrObjList)
{
- case SdrObjListKind::GroupObj:
- if (SdrObjGroup *pGroup = dynamic_cast<SdrObjGroup*>(pObjList->GetOwnerObj()))
- return pGroup->getUnoShape();
- else if (E3dScene *pScene = dynamic_cast<E3dScene*>(pObjList->GetOwnerObj()))
- return pScene->getUnoShape();
- break;
- case SdrObjListKind::DrawPage:
- case SdrObjListKind::MasterPage:
- return dynamic_cast<SdrPage&>(*pObjList).getUnoPage();
- default:
- OSL_FAIL( "SvxShape::getParent( ): unexpected SdrObjListKind" );
- break;
+ // SdrObject is member of a SdrObjList. That may be a SdrObject
+ // (SdrObjGroup or E3dScene) or a SdrPage.
+ // Check for SdrObject first - using getSdrPageFromSdrObjList
+ // *will* get the SdrPage even when the SdrObject is deep buried
+ // in a construct of SdrObjGroup.
+ // We want to ask for the direct parent here...
+ SdrObject* pParentSdrObject(pParentSdrObjList->getSdrObjectFromSdrObjList());
+
+ if(nullptr != pParentSdrObject)
+ {
+ // SdrObject is member of a SdrObject-based Group (SdrObjGroup or E3dScene).
+ return pParentSdrObject->getUnoShape();
+ }
+ else
+ {
+ SdrPage* pParentSdrPage(pParentSdrObjList->getSdrPageFromSdrObjList());
+
+ if(nullptr != pParentSdrPage)
+ {
+ // SdrObject is inserted to a SdrPage. Since
+ // we checked for getSdrObjectFromSdrObjList first,
+ // we can even say that it is directly member of that
+ // SdrPage.
+ return pParentSdrPage->getUnoPage();
+ }
+ }
+
+ // not member of any SdrObjList, no parent
+ OSL_FAIL( "SvxShape::getParent( ): unexpected Parent SdrObjList" );
}
}
+ // no SdrObject, no parent
return uno::Reference<uno::XInterface>();
}
diff --git a/svx/source/unodraw/unoshtxt.cxx b/svx/source/unodraw/unoshtxt.cxx
index 5c9f669b37cc..af313e15731e 100644
--- a/svx/source/unodraw/unoshtxt.cxx
+++ b/svx/source/unodraw/unoshtxt.cxx
@@ -540,7 +540,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetBackgroundTextForwarder()
mbDataValid = false;
}
- if( mpObject && mpText && !mbDataValid && mpObject->IsInserted() && mpObject->GetPage() )
+ if( mpObject && mpText && !mbDataValid && mpObject->IsInserted() && mpObject->getSdrPageFromSdrObject() )
{
mpTextForwarder->flushCache();
@@ -555,7 +555,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetBackgroundTextForwarder()
else
pOutlinerParaObject = mpText->GetOutlinerParaObject();
- if( pOutlinerParaObject && ( bOwnParaObj || !mpObject->IsEmptyPresObj() || mpObject->GetPage()->IsMasterPage() ) )
+ if( pOutlinerParaObject && ( bOwnParaObj || !mpObject->IsEmptyPresObj() || mpObject->getSdrPageFromSdrObject()->IsMasterPage() ) )
{
mpOutliner->SetText( *pOutlinerParaObject );
@@ -579,7 +579,7 @@ SvxTextForwarder* SvxTextEditSourceImpl::GetBackgroundTextForwarder()
if( pPool )
mpOutliner->SetStyleSheetPool( pPool );
- SfxStyleSheet* pStyleSheet = mpObject->GetPage()->GetTextStyleSheetForObject( mpObject );
+ SfxStyleSheet* pStyleSheet = mpObject->getSdrPageFromSdrObject()->GetTextStyleSheetForObject( mpObject );
if( pStyleSheet )
mpOutliner->SetStyleSheet( 0, pStyleSheet );
diff --git a/sw/source/core/doc/docdraw.cxx b/sw/source/core/doc/docdraw.cxx
index 2acd8c41561e..5ea865f618d1 100644
--- a/sw/source/core/doc/docdraw.cxx
+++ b/sw/source/core/doc/docdraw.cxx
@@ -577,7 +577,7 @@ namespace docfunc
{
const SdrPage& rSdrPage( *(p_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 )) );
- SdrObjListIter aIter( rSdrPage, SdrIterMode::Flat );
+ SdrObjListIter aIter( &rSdrPage, SdrIterMode::Flat );
while( aIter.IsMore() )
{
SdrObject* pObj( aIter.Next() );
@@ -602,7 +602,7 @@ namespace docfunc
{
const SdrPage& rSdrPage( *(p_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 )) );
- SdrObjListIter aIter( rSdrPage, SdrIterMode::Flat );
+ SdrObjListIter aIter( &rSdrPage, SdrIterMode::Flat );
while( aIter.IsMore() )
{
SdrObject* pObj( aIter.Next() );
diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx
index 3377220d98fd..a958a9e80d1e 100644
--- a/sw/source/core/doc/textboxhelper.cxx
+++ b/sw/source/core/doc/textboxhelper.cxx
@@ -212,7 +212,7 @@ uno::Any SwTextBoxHelper::getByIndex(SdrPage const* pPage, sal_Int32 nIndex)
sal_Int32 SwTextBoxHelper::getOrdNum(const SdrObject* pObject)
{
- if (const SdrPage* pPage = pObject->GetPage())
+ if (const SdrPage* pPage = pObject->getSdrPageFromSdrObject())
{
sal_Int32 nOrder = 0; // Current logical order.
for (std::size_t i = 0; i < pPage->GetObjCount(); ++i)
diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx
index de8d91615722..6b569bae2a77 100644
--- a/sw/source/core/draw/dcontact.cxx
+++ b/sw/source/core/draw/dcontact.cxx
@@ -484,8 +484,8 @@ SwFlyDrawContact::~SwFlyDrawContact()
if ( mpMasterObj )
{
mpMasterObj->SetUserCall( nullptr );
- if ( mpMasterObj->GetPage() )
- mpMasterObj->GetPage()->RemoveObject( mpMasterObj->GetOrdNum() );
+ if ( mpMasterObj->getSdrPageFromSdrObject() )
+ mpMasterObj->getSdrPageFromSdrObject()->RemoveObject( mpMasterObj->GetOrdNum() );
}
}
@@ -531,7 +531,7 @@ SwVirtFlyDrawObj* SwFlyDrawContact::CreateNewRef(SwFlyFrame* pFly, SwFlyFrameFor
// After creating the first Reference the Masters are removed from the
// List and are not important anymore.
SdrPage* pPg(nullptr);
- if(nullptr != (pPg = pContact->GetMaster()->GetPage()))
+ if(nullptr != (pPg = pContact->GetMaster()->getSdrPageFromSdrObject()))
{
const size_t nOrdNum = pContact->GetMaster()->GetOrdNum();
pPg->ReplaceObject(pDrawObj, nOrdNum);
@@ -2231,14 +2231,14 @@ void SwDrawVirtObj::AddToDrawingPage()
// insert 'virtual' drawing object into page, set layer and user call.
SdrPage* pDrawPg;
// #i27030# - apply order number of referenced object
- if ( nullptr != ( pDrawPg = pOrgMasterSdrObj->GetPage() ) )
+ if ( nullptr != ( pDrawPg = pOrgMasterSdrObj->getSdrPageFromSdrObject() ) )
{
// #i27030# - apply order number of referenced object
pDrawPg->InsertObject( this, GetReferencedObj().GetOrdNum() );
}
else
{
- pDrawPg = GetPage();
+ pDrawPg = getSdrPageFromSdrObject();
if ( pDrawPg )
{
pDrawPg->SetObjectOrdNum( GetOrdNumDirect(),
@@ -2255,9 +2255,9 @@ void SwDrawVirtObj::AddToDrawingPage()
void SwDrawVirtObj::RemoveFromDrawingPage()
{
SetUserCall( nullptr );
- if ( GetPage() )
+ if ( getSdrPageFromSdrObject() )
{
- GetPage()->RemoveObject( GetOrdNum() );
+ getSdrPageFromSdrObject()->RemoveObject( GetOrdNum() );
}
}
@@ -2265,7 +2265,7 @@ void SwDrawVirtObj::RemoveFromDrawingPage()
bool SwDrawVirtObj::IsConnected() const
{
bool bRetVal = GetAnchorFrame() &&
- ( GetPage() && GetUserCall() );
+ ( getSdrPageFromSdrObject() && GetUserCall() );
return bRetVal;
}
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx
index eeebd9531207..41ba37b3089b 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -434,8 +434,8 @@ SwVirtFlyDrawObj::SwVirtFlyDrawObj(
SwVirtFlyDrawObj::~SwVirtFlyDrawObj()
{
- if ( GetPage() ) //Withdraw SdrPage the responsibility.
- GetPage()->RemoveObject( GetOrdNum() );
+ if ( getSdrPageFromSdrObject() ) //Withdraw SdrPage the responsibility.
+ getSdrPageFromSdrObject()->RemoveObject( GetOrdNum() );
}
const SwFrameFormat *SwVirtFlyDrawObj::GetFormat() const
diff --git a/sw/source/core/draw/dview.cxx b/sw/source/core/draw/dview.cxx
index 255163443a96..5bcd919937d3 100644
--- a/sw/source/core/draw/dview.cxx
+++ b/sw/source/core/draw/dview.cxx
@@ -315,7 +315,7 @@ sal_uInt32 SwDrawView::GetMaxChildOrdNum( const SwFlyFrame& _rParentObj,
{
sal_uInt32 nMaxChildOrdNum = _rParentObj.GetDrawObj()->GetOrdNum();
- const SdrPage* pDrawPage = _rParentObj.GetDrawObj()->GetPage();
+ const SdrPage* pDrawPage = _rParentObj.GetDrawObj()->getSdrPageFromSdrObject();
OSL_ENSURE( pDrawPage,
"<SwDrawView::GetMaxChildOrdNum(..) - missing drawing page at parent object - crash!" );
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index 478bb781b116..804ae7d33aac 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -931,11 +931,11 @@ bool SwFEShell::Paste( SwDoc* pClpDoc )
SdrObjList* pList = pNew->getParentOfSdrObject();
if ( pList )
{
- SdrObject* pOwner = pList->GetOwnerObj();
- if ( pOwner )
+ SdrObjGroup* pOwner(dynamic_cast< SdrObjGroup* >(pList->getSdrObjectFromSdrObjList()));
+
+ if(nullptr != pOwner)
{
- SdrObjGroup* pThisGroup = dynamic_cast<SdrObjGroup*>( pOwner );
- aGrpAnchor = pThisGroup->GetAnchorPos();
+ aGrpAnchor = pOwner->GetAnchorPos();
}
}
@@ -1269,7 +1269,7 @@ static void lcl_ConvertSdrOle2ObjsToSdrGrafObjs( SdrModel& _rModel )
{
// setup object iterator in order to iterate through all objects
// including objects in group objects, but exclusive group objects.
- SdrObjListIter aIter(*(_rModel.GetPage( nPgNum )));
+ SdrObjListIter aIter(_rModel.GetPage(nPgNum));
while( aIter.IsMore() )
{
SdrOle2Obj* pOle2Obj = dynamic_cast< SdrOle2Obj* >( aIter.Next() );
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 723f763ded5c..e356ef8a69af 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -1523,7 +1523,7 @@ const SdrObject* SwFEShell::GetBestObject( bool bNext, GotoObjFlags eType, bool
OSL_ENSURE( pList, "No object list to iterate" );
- SdrObjListIter aObjIter( *pList, bFlat ? SdrIterMode::Flat : SdrIterMode::DeepNoGroups );
+ SdrObjListIter aObjIter( pList, bFlat ? SdrIterMode::Flat : SdrIterMode::DeepNoGroups );
while ( aObjIter.IsMore() )
{
SdrObject* pObj = aObjIter.Next();
@@ -1576,7 +1576,7 @@ const SdrObject* SwFEShell::GetBestObject( bool bNext, GotoObjFlags eType, bool
(aCurPos.getX() < aPos.getX())) ) // " reverse
{
aBestPos = Point( nTmp, nTmp );
- SdrObjListIter aTmpIter( *pList, bFlat ? SdrIterMode::Flat : SdrIterMode::DeepNoGroups );
+ SdrObjListIter aTmpIter( pList, bFlat ? SdrIterMode::Flat : SdrIterMode::DeepNoGroups );
while ( aTmpIter.IsMore() )
{
SdrObject* pTmpObj = aTmpIter.Next();
diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx
index 2a20c9c70e9d..f07f386e63d4 100644
--- a/sw/source/core/layout/flylay.cxx
+++ b/sw/source/core/layout/flylay.cxx
@@ -825,8 +825,8 @@ void SwPageFrame::AppendFlyToPage( SwFlyFrame *pNew )
{
//#i119945# set pFly's OrdNum to _rNewObj's. So when pFly is removed by Undo, the original OrdNum will not be changed.
sal_uInt32 nNewNum = pObj->GetOrdNumDirect();
- if ( pObj->GetPage() )
- pObj->GetPage()->SetObjectOrdNum( pFly->GetVirtDrawObj()->GetOrdNumDirect(), nNewNum );
+ if ( pObj->getSdrPageFromSdrObject() )
+ pObj->getSdrPageFromSdrObject()->SetObjectOrdNum( pFly->GetVirtDrawObj()->GetOrdNumDirect(), nNewNum );
else
pFly->GetVirtDrawObj()->SetOrdNum( nNewNum );
}
@@ -1060,8 +1060,8 @@ void SwPageFrame::AppendDrawObjToPage( SwAnchoredObject& _rNewObj )
{
//#i119945# set pFly's OrdNum to _rNewObj's. So when pFly is removed by Undo, the original OrdNum will not be changed.
sal_uInt32 nNewNum = _rNewObj.GetDrawObj()->GetOrdNumDirect();
- if ( _rNewObj.GetDrawObj()->GetPage() )
- _rNewObj.DrawObj()->GetPage()->SetObjectOrdNum( pFlyFrame->GetVirtDrawObj()->GetOrdNumDirect(), nNewNum );
+ if ( _rNewObj.GetDrawObj()->getSdrPageFromSdrObject() )
+ _rNewObj.DrawObj()->getSdrPageFromSdrObject()->SetObjectOrdNum( pFlyFrame->GetVirtDrawObj()->GetOrdNumDirect(), nNewNum );
else
pFlyFrame->GetVirtDrawObj()->SetOrdNum( nNewNum );
}
diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx
index 0df9ee9c5900..07e5dc779c8b 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -1027,7 +1027,7 @@ void AppendObjs( const SwFrameFormats *pTable, sal_uLong nIndex,
}
if ( pSdrObj )
{
- if ( !pSdrObj->GetPage() )
+ if ( !pSdrObj->getSdrPageFromSdrObject() )
{
pFormat->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0)->
InsertObject(pSdrObj, pSdrObj->GetOrdNumDirect());
@@ -2656,10 +2656,10 @@ static void lcl_Regist( SwPageFrame *pPage, const SwFrame *pAnch )
const SwFlyFrame* pFly = pAnch->FindFlyFrame();
if ( pFly &&
pObj->GetDrawObj()->GetOrdNum() < pFly->GetVirtDrawObj()->GetOrdNum() &&
- pObj->GetDrawObj()->GetPage() )
+ pObj->GetDrawObj()->getSdrPageFromSdrObject() )
{
//#i119945# set pFly's OrdNum to pObj's. So when pFly is removed by Undo, the original OrdNum will not be changed.
- pObj->DrawObj()->GetPage()->SetObjectOrdNum( pFly->GetVirtDrawObj()->GetOrdNumDirect(),
+ pObj->DrawObj()->getSdrPageFromSdrObject()->SetObjectOrdNum( pFly->GetVirtDrawObj()->GetOrdNumDirect(),
pObj->GetDrawObj()->GetOrdNumDirect() );
}
}
diff --git a/sw/source/filter/html/htmldrawreader.cxx b/sw/source/filter/html/htmldrawreader.cxx
index 8b1589563026..8b7413ebdef3 100644
--- a/sw/source/filter/html/htmldrawreader.cxx
+++ b/sw/source/filter/html/htmldrawreader.cxx
@@ -358,8 +358,7 @@ void SwHTMLParser::NewMarquee( HTMLTable *pCurTable )
m_pMarquee = SdrObjFactory::MakeNewObject(
*pModel,
SdrInventor::Default,
- OBJ_TEXT,
- pPg);
+ OBJ_TEXT);
if( !m_pMarquee )
return;
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index a5bd0bc8f571..75e05dd3b22c 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -758,20 +758,6 @@ void DocxSdrExport::endDMLAnchorInline(const SwFrameFormat* pFrameFormat)
void DocxSdrExport::writeVMLDrawing(const SdrObject* sdrObj, const SwFrameFormat& rFrameFormat)
{
- bool bSwapInPage = false;
- if (!sdrObj->GetPage())
- {
- if (SdrModel* pModel
- = m_pImpl->m_rExport.m_pDoc->getIDocumentDrawModelAccess().GetDrawModel())
- {
- if (SdrPage* pPage = pModel->GetPage(0))
- {
- bSwapInPage = true;
- const_cast<SdrObject*>(sdrObj)->SetPage(pPage);
- }
- }
- }
-
m_pImpl->m_pSerializer->startElementNS(XML_w, XML_pict, FSEND);
m_pImpl->m_pDrawingML->SetFS(m_pImpl->m_pSerializer);
// See WinwordAnchoring::SetAnchoring(), these are not part of the SdrObject, have to be passed around manually.
@@ -782,9 +768,6 @@ void DocxSdrExport::writeVMLDrawing(const SdrObject* sdrObj, const SwFrameFormat
*sdrObj, rHoriOri.GetHoriOrient(), rVertOri.GetVertOrient(), rHoriOri.GetRelationOrient(),
rVertOri.GetRelationOrient(), true);
m_pImpl->m_pSerializer->endElementNS(XML_w, XML_pict);
-
- if (bSwapInPage)
- const_cast<SdrObject*>(sdrObj)->SetPage(nullptr);
}
bool lcl_isLockedCanvas(const uno::Reference<drawing::XShape>& xShape)
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 42199d4770b6..e44a7dd85a96 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -1882,20 +1882,6 @@ void RtfAttributeOutput::OutputFlyFrame_Impl(const ww8::Frame& rFrame, const Poi
const SdrObject* pSdrObj = rFrame.GetFrameFormat().FindRealSdrObject();
if (pSdrObj)
{
- bool bSwapInPage = false;
- if (!pSdrObj->GetPage())
- {
- if (SwDrawModel* pModel
- = m_rExport.m_pDoc->getIDocumentDrawModelAccess().GetDrawModel())
- {
- if (SdrPage* pPage = pModel->GetPage(0))
- {
- bSwapInPage = true;
- const_cast<SdrObject*>(pSdrObj)->SetPage(pPage);
- }
- }
- }
-
m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_FIELD "{");
m_aRunText->append(OOO_STRING_SVTOOLS_RTF_IGNORE);
m_aRunText->append(OOO_STRING_SVTOOLS_RTF_FLDINST);
@@ -1907,9 +1893,6 @@ void RtfAttributeOutput::OutputFlyFrame_Impl(const ww8::Frame& rFrame, const Poi
m_aRunText->append('}');
m_aRunText->append('}');
-
- if (bSwapInPage)
- const_cast<SdrObject*>(pSdrObj)->SetPage(nullptr);
}
}
break;
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index fda60b12ce8d..19ab8097e7d5 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -2283,23 +2283,7 @@ SwEscherEx::SwEscherEx(SvStream* pStrm, WW8Export& rWW8Wrt)
const SdrObject* pSdrObj = rFormat.FindRealSdrObject();
if (pSdrObj)
{
- bool bSwapInPage = false;
- if (!pSdrObj->GetPage())
- {
- if (SwDrawModel* pModel = rWrt.m_pDoc->getIDocumentDrawModelAccess().GetDrawModel())
- {
- if (SdrPage *pPage = pModel->GetPage(0))
- {
- bSwapInPage = true;
- const_cast<SdrObject*>(pSdrObj)->SetPage(pPage);
- }
- }
- }
-
nShapeId = AddSdrObject(*pSdrObj);
-
- if (bSwapInPage)
- const_cast<SdrObject*>(pSdrObj)->SetPage(nullptr);
}
#if OSL_DEBUG_LEVEL > 0
else
diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index 53a3c3289f71..31beefff762e 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -2865,7 +2865,7 @@ SwFrameFormat* SwWW8ImplReader::MungeTextIntoDrawBox(SvxMSDffImportRec *pRecord,
// remove the object from Z-Order list
m_xMSDffManager->RemoveFromShapeOrder( pSdrTextObj );
// take the object from the drawing page
- if( pSdrTextObj->GetPage() )
+ if( pSdrTextObj->getSdrPageFromSdrObject() )
m_pDrawPg->RemoveObject( pSdrTextObj->GetOrdNum() );
// and delete FrameFormat, because replaced by graphic
// (this also deletes the object)
@@ -3093,7 +3093,7 @@ SwFlyFrameFormat* SwWW8ImplReader::ImportReplaceableDrawables( SdrObject* &rpObj
// remove old object from Z-Order-List
m_xMSDffManager->RemoveFromShapeOrder( rpObject );
// remove from Drawing-Page
- if( rpObject->GetPage() )
+ if( rpObject->getSdrPageFromSdrObject() )
m_pDrawPg->RemoveObject( rpObject->GetOrdNum() );
// and delete the object
diff --git a/sw/source/filter/ww8/ww8graf2.cxx b/sw/source/filter/ww8/ww8graf2.cxx
index 2998c26f93f3..338b27aebe6a 100644
--- a/sw/source/filter/ww8/ww8graf2.cxx
+++ b/sw/source/filter/ww8/ww8graf2.cxx
@@ -713,7 +713,7 @@ SwFrameFormat* SwWW8ImplReader::ImportGraf(SdrTextObj const * pTextObj,
pOurNewObject );
// delete and destroy old SdrGrafObj from page
- if (pObject->GetPage())
+ if (pObject->getSdrPageFromSdrObject())
m_pDrawPg->RemoveObject(pObject->GetOrdNum());
SdrObject::Free( pObject );
}
@@ -725,7 +725,7 @@ SwFrameFormat* SwWW8ImplReader::ImportGraf(SdrTextObj const * pTextObj,
m_xMSDffManager->RemoveFromShapeOrder( pObject );
// also delete this from the page if not grouped
- if (pTextObj && !bTextObjWasGrouped && pTextObj->GetPage())
+ if (pTextObj && !bTextObjWasGrouped && pTextObj->getSdrPageFromSdrObject())
m_pDrawPg->RemoveObject( pTextObj->GetOrdNum() );
}
m_xMSDffManager->EnableFallbackStream();
diff --git a/sw/source/filter/xml/swxml.cxx b/sw/source/filter/xml/swxml.cxx
index b04e2edc3117..cdeee03a3a96 100644
--- a/sw/source/filter/xml/swxml.cxx
+++ b/sw/source/filter/xml/swxml.cxx
@@ -440,7 +440,7 @@ static void lcl_ConvertSdrOle2ObjsToSdrGrafObjs(SwDoc& _rDoc)
const SdrPage& rSdrPage( *(_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 )) );
// iterate recursive with group objects over all shapes on the draw page
- SdrObjListIter aIter( rSdrPage );
+ SdrObjListIter aIter( &rSdrPage );
while( aIter.IsMore() )
{
SdrOle2Obj* pOle2Obj = dynamic_cast< SdrOle2Obj* >( aIter.Next() );
diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index 4e69db27180e..85e1638aafed 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -628,7 +628,7 @@ bool SwTransferable::WriteObject( tools::SvRef<SotStorageStream>& xStream,
for(sal_uInt16 a(0); a < pModel->GetPageCount(); a++)
{
const SdrPage* pPage = pModel->GetPage(a);
- SdrObjListIter aIter(*pPage, SdrIterMode::DeepNoGroups);
+ SdrObjListIter aIter(pPage, SdrIterMode::DeepNoGroups);
while(aIter.IsMore())
{
diff --git a/sw/source/uibase/shells/drwbassh.cxx b/sw/source/uibase/shells/drwbassh.cxx
index d175ffefb7e6..0aef51b6cdea 100644
--- a/sw/source/uibase/shells/drwbassh.cxx
+++ b/sw/source/uibase/shells/drwbassh.cxx
@@ -596,7 +596,7 @@ IMPL_LINK( SwDrawBaseShell, CheckGroupShapeNameHdl, AbstractSvxObjectNameDialog&
{
bRet = true;
SwDrawModel* pModel = rSh.getIDocumentDrawModelAccess().GetDrawModel();
- SdrObjListIter aIter( *(pModel->GetPage(0)), SdrIterMode::DeepWithGroups );
+ SdrObjListIter aIter( pModel->GetPage(0), SdrIterMode::DeepWithGroups );
while( aIter.IsMore() )
{
SdrObject* pTempObj = aIter.Next();
diff --git a/sw/source/uibase/uno/unotxvw.cxx b/sw/source/uibase/uno/unotxvw.cxx
index 88b27cbae3c1..1348a5fde2bf 100644
--- a/sw/source/uibase/uno/unotxvw.cxx
+++ b/sw/source/uibase/uno/unotxvw.cxx
@@ -306,7 +306,7 @@ sal_Bool SwXTextView::select(const uno::Any& aInterface)
for (SdrObject* pSdrObject : sdrObjects)
{
// GetSelectableFromAny did not check pSdrObject is in right doc!
- if (pPV && pSdrObject->GetPage() == pPV->GetPage())
+ if (pPV && pSdrObject->getSdrPageFromSdrObject() == pPV->GetPage())
{
pDrawView->MarkObj(pSdrObject, pPV);
bRet = true;