summaryrefslogtreecommitdiffstats
path: root/chart2/source/view/main/DrawModelWrapper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/view/main/DrawModelWrapper.cxx')
-rw-r--r--chart2/source/view/main/DrawModelWrapper.cxx56
1 files changed, 38 insertions, 18 deletions
diff --git a/chart2/source/view/main/DrawModelWrapper.cxx b/chart2/source/view/main/DrawModelWrapper.cxx
index ff2171f596a1..71cd8d699cf7 100644
--- a/chart2/source/view/main/DrawModelWrapper.cxx
+++ b/chart2/source/view/main/DrawModelWrapper.cxx
@@ -25,6 +25,7 @@
#include <svl/itempool.hxx>
#include <svx/objfac3d.hxx>
#include <svx/svdpage.hxx>
+#include <svx/svx3ditems.hxx>
#include <svx/xtable.hxx>
#include <svx/svdoutl.hxx>
#include <editeng/unolingu.hxx>
@@ -43,13 +44,19 @@ namespace chart
{
DrawModelWrapper::DrawModelWrapper()
-: SdrModel(&ChartItemPool::GetGlobalChartItemPool())
+: SdrModel()
{
- SetVOCInvalidationIsReliable(true);
- SetScaleUnit(MapUnit::Map100thMM);
- SetScaleFraction(Fraction(1, 1));
+ m_xChartItemPool = ChartItemPool::CreateChartItemPool();
+
SetDefaultFontHeight(423); // 12pt
+ SfxItemPool* pMasterPool = &GetItemPool();
+ pMasterPool->SetDefaultMetric(MapUnit::Map100thMM);
+ pMasterPool->SetUserDefaultItem(SfxBoolItem(EE_PARA_HYPHENATE, true) );
+ pMasterPool->SetUserDefaultItem(makeSvx3DPercentDiagonalItem (5));
+
+ // append chart pool to end of pool chain
+ pMasterPool->GetLastPoolInChain()->SetSecondaryPool(m_xChartItemPool.get());
SetTextDefaults();
//this factory needs to be created before first use of 3D scenes once upon an office runtime
@@ -93,19 +100,36 @@ DrawModelWrapper::DrawModelWrapper()
DrawModelWrapper::~DrawModelWrapper()
{
+ // normally call from ~SdrModel, but do it here explicitly before we clear m_xChartItemPool
+ implDtorClearModel();
+
+ //remove m_pChartItemPool from pool chain
+ if (m_xChartItemPool)
+ {
+ SfxItemPool* pPool = &GetItemPool();
+ for (;;)
+ {
+ SfxItemPool* pSecondary = pPool->GetSecondaryPool();
+ if(pSecondary == m_xChartItemPool.get())
+ {
+ pPool->SetSecondaryPool (nullptr);
+ break;
+ }
+ pPool = pSecondary;
+ }
+ m_xChartItemPool.clear();
+ }
m_pRefDevice.disposeAndClear();
}
-uno::Reference< uno::XInterface > DrawModelWrapper::createUnoModel()
+uno::Reference< frame::XModel > DrawModelWrapper::createUnoModel()
{
- uno::Reference< lang::XComponent > xComponent = new SvxUnoDrawingModel( this ); //tell Andreas Schluens if SvxUnoDrawingModel is not needed anymore -> remove export from svx to avoid link problems in writer
- return uno::Reference< uno::XInterface >::query( xComponent );
+ return new SvxUnoDrawingModel( this ); //tell Andreas Schluens if SvxUnoDrawingModel is not needed anymore -> remove export from svx to avoid link problems in writer
}
uno::Reference< frame::XModel > DrawModelWrapper::getUnoModel()
{
- uno::Reference< uno::XInterface > xI = SdrModel::getUnoModel();
- return uno::Reference<frame::XModel>::query( xI );
+ return SdrModel::getUnoModel();
}
SdrModel& DrawModelWrapper::getSdrModel()
@@ -268,17 +292,13 @@ SdrObject* DrawModelWrapper::getNamedSdrObject( const OUString& rObjectCID, SdrO
{
if(!pSearchList || rObjectCID.isEmpty())
return nullptr;
- const size_t nCount = pSearchList->GetObjCount();
- for( size_t nN=0; nN<nCount; ++nN )
+ for (const rtl::Reference<SdrObject>& pObj : *pSearchList)
{
- SdrObject* pObj = pSearchList->GetObj(nN);
- if(!pObj)
- continue;
if( ObjectIdentifier::areIdenticalObjects( rObjectCID, pObj->GetName() ) )
- return pObj;
- pObj = DrawModelWrapper::getNamedSdrObject( rObjectCID, pObj->GetSubList() );
- if(pObj)
- return pObj;
+ return pObj.get();
+ SdrObject* pNamedObj = DrawModelWrapper::getNamedSdrObject( rObjectCID, pObj->GetSubList() );
+ if(pNamedObj)
+ return pNamedObj;
}
return nullptr;
}