summaryrefslogtreecommitdiff
path: root/reportdesign
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2014-12-04 21:39:43 +0100
committerDavid Tardon <dtardon@redhat.com>2014-12-04 23:10:25 +0100
commit51bacc6a065f380a26b8cc2e5c18ff0ab4162ac3 (patch)
treeb42a463a134ff18ddac578dc88066d282268c4eb /reportdesign
parent9638e6207c7fc48712b1b238177462c00f5011e8 (diff)
impl. Clone for all subclasses of SdrPage
Change-Id: Ie370161e51ff83cb605bc57d317ff945404e5611
Diffstat (limited to 'reportdesign')
-rw-r--r--reportdesign/inc/RptPage.hxx2
-rw-r--r--reportdesign/source/core/sdr/RptPage.cxx13
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;
}