diff options
author | David Tardon <dtardon@redhat.com> | 2014-12-04 21:39:43 +0100 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2014-12-04 23:10:25 +0100 |
commit | 51bacc6a065f380a26b8cc2e5c18ff0ab4162ac3 (patch) | |
tree | b42a463a134ff18ddac578dc88066d282268c4eb /reportdesign | |
parent | 9638e6207c7fc48712b1b238177462c00f5011e8 (diff) |
impl. Clone for all subclasses of SdrPage
Change-Id: Ie370161e51ff83cb605bc57d317ff945404e5611
Diffstat (limited to 'reportdesign')
-rw-r--r-- | reportdesign/inc/RptPage.hxx | 2 | ||||
-rw-r--r-- | reportdesign/source/core/sdr/RptPage.cxx | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/reportdesign/inc/RptPage.hxx b/reportdesign/inc/RptPage.hxx index 9ea966aea156..e45a9064da48 100644 --- a/reportdesign/inc/RptPage.hxx +++ b/reportdesign/inc/RptPage.hxx @@ -60,7 +60,7 @@ public: virtual SdrPage* Clone() const SAL_OVERRIDE; - using SdrPage::Clone; + virtual SdrPage* Clone( SdrModel* pNewModel ) const SAL_OVERRIDE; virtual void NbcInsertObject(SdrObject* pObj, size_t nPos, const SdrInsertReason* pReason) SAL_OVERRIDE; virtual SdrObject* RemoveObject(size_t nObjNum) SAL_OVERRIDE; diff --git a/reportdesign/source/core/sdr/RptPage.cxx b/reportdesign/source/core/sdr/RptPage.cxx index c55a36082264..c22864c6a1aa 100644 --- a/reportdesign/source/core/sdr/RptPage.cxx +++ b/reportdesign/source/core/sdr/RptPage.cxx @@ -61,8 +61,19 @@ OReportPage::~OReportPage() SdrPage* OReportPage::Clone() const { + return Clone(0); +} + +SdrPage* OReportPage::Clone( SdrModel* const pNewModel ) const +{ OReportPage *const pNewPage = new OReportPage( *this ); - pNewPage->lateInit( *this ); + OReportModel* pReportModel = 0; + if ( pNewModel ) + { + pReportModel = dynamic_cast<OReportModel*>( pNewModel ); + assert( pReportModel ); + } + pNewPage->lateInit( *this, pReportModel ); return pNewPage; } |