Skip to content

Commit 2dca1cb

Browse files
author
mhugent
committed
Cleanup items before reading from template. Fixes bug #2083
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@12098 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 8372756 commit 2dca1cb

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

src/app/composer/qgscomposer.cpp

+15-8
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
184184
connectSlots();
185185

186186
mComposition = new QgsComposition( mQgis->mapCanvas()->mapRenderer() );
187-
mComposition->setParent(mView);
187+
mComposition->setParent( mView );
188188
mView->setComposition( mComposition );
189189

190190
QgsCompositionWidget* compositionWidget = new QgsCompositionWidget( mCompositionOptionsFrame, mComposition );
@@ -220,13 +220,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title ): QMainWindow(),
220220

221221
QgsComposer::~QgsComposer()
222222
{
223-
//delete all the items
224-
QMap<QgsComposerItem*, QWidget*>::iterator it = mItemWidgetMap.begin();
225-
for ( ; it != mItemWidgetMap.end(); ++it )
226-
{
227-
delete it.key();
228-
delete it.value();
229-
}
223+
deleteItems();
230224
}
231225

232226
void QgsComposer::setupTheme()
@@ -842,6 +836,7 @@ void QgsComposer::on_mActionLoadFromTemplate_triggered()
842836
return;
843837
}
844838

839+
deleteItems();
845840
readXML( templateDocument );
846841

847842
//clean up after template read (e.g. legend and map extent)
@@ -1176,6 +1171,18 @@ void QgsComposer::readXML( const QDomElement& composerElem, const QDomDocument&
11761171
setSelectionTool();
11771172
}
11781173

1174+
void QgsComposer::deleteItems()
1175+
{
1176+
//delete all the items
1177+
QMap<QgsComposerItem*, QWidget*>::iterator it = mItemWidgetMap.begin();
1178+
for ( ; it != mItemWidgetMap.end(); ++it )
1179+
{
1180+
delete it.key();
1181+
delete it.value();
1182+
}
1183+
mItemWidgetMap.clear();
1184+
}
1185+
11791186
void QgsComposer::addComposerMap( QgsComposerMap* map )
11801187
{
11811188
if ( !map )

src/app/composer/qgscomposer.h

+3
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,9 @@ class QgsComposer: public QMainWindow, private Ui::QgsComposerBase
246246
//! Writes state under DOM element
247247
void writeXML( QDomNode& parentNode, QDomDocument& doc );
248248

249+
//! Removes all the item from the graphics scene and deletes them
250+
void deleteItems();
251+
249252
/**Composer title*/
250253
QString mTitle;
251254

0 commit comments

Comments
 (0)