Skip to content

Commit

Permalink
More cleanup changes
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent committed Aug 8, 2012
1 parent ce84b56 commit 852c5e7
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 8 deletions.
10 changes: 3 additions & 7 deletions src/core/composer/qgscomposermultiframe.cpp
Expand Up @@ -27,13 +27,7 @@ QgsComposerMultiFrame::QgsComposerMultiFrame(): mComposition( 0 ), mResizeMode(

QgsComposerMultiFrame::~QgsComposerMultiFrame()
{
setResizeMode( UseExistingFrames );
QList<QgsComposerFrame*>::iterator frameIt = mFrameItems.begin();
for ( ; frameIt != mFrameItems.end(); ++frameIt )
{
mComposition->removeComposerItem( *frameIt );
delete( *frameIt );
}
deleteFrames();
}

void QgsComposerMultiFrame::setResizeMode( ResizeMode mode )
Expand Down Expand Up @@ -152,12 +146,14 @@ void QgsComposerMultiFrame::deleteFrames()
{
ResizeMode bkResizeMode = mResizeMode;
mResizeMode = UseExistingFrames;
mComposition->blockSignals( true );
QList<QgsComposerFrame*>::iterator frameIt = mFrameItems.begin();
for ( ; frameIt != mFrameItems.end(); ++frameIt )
{
mComposition->removeComposerItem( *frameIt, false );
delete *frameIt;
}
mComposition->blockSignals( false );
mFrameItems.clear();
mResizeMode = bkResizeMode;
}
Expand Down
8 changes: 8 additions & 0 deletions src/core/composer/qgscomposition.cpp
Expand Up @@ -60,6 +60,14 @@ QgsComposition::QgsComposition():
QgsComposition::~QgsComposition()
{
removePaperItems();

QSet<QgsComposerMultiFrame*>::iterator multiFrameIt = mMultiFrames.begin();
for ( ; multiFrameIt != mMultiFrames.end(); ++multiFrameIt )
{
delete *multiFrameIt;
}
mMultiFrames.clear();

// make sure that all composer items are removed before
// this class is deconstructed - to avoid segfaults
// when composer items access in destructor composition that isn't valid anymore
Expand Down
1 change: 1 addition & 0 deletions src/core/composer/qgscomposition.h
Expand Up @@ -206,6 +206,7 @@ class CORE_EXPORT QgsComposition: public QGraphicsScene
void beginMultiFrameCommand( QgsComposerMultiFrame* multiFrame, const QString& text );
void endMultiFrameCommand();

/**Adds multiframe. The object is owned by QgsComposition until removeMultiFrame is called*/
void addMultiFrame( QgsComposerMultiFrame* multiFrame );
/**Removes multi frame (but does not delete it)*/
void removeMultiFrame( QgsComposerMultiFrame* multiFrame );
Expand Down
3 changes: 2 additions & 1 deletion tests/src/core/testqgscomposerhtml.cpp
Expand Up @@ -67,7 +67,7 @@ void TestQgsComposerHtml::table()
"control_images" + QDir::separator() + "expected_composerhtml" + QDir::separator() + "composerhtml_table.png" ) );
bool result = checker.testComposition();
mComposition->removeMultiFrame( htmlItem );
//delete htmlItem;
delete htmlItem;
QVERIFY( result );
}

Expand Down Expand Up @@ -102,6 +102,7 @@ void TestQgsComposerHtml::tableMultiFrame()
}

mComposition->removeMultiFrame( htmlItem );
delete htmlItem;
QVERIFY( result );
}

Expand Down

0 comments on commit 852c5e7

Please sign in to comment.