Skip to content

Commit

Permalink
More multiframe undo improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent committed Aug 8, 2012
1 parent b40d0af commit c2f768f
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 10 deletions.
2 changes: 0 additions & 2 deletions src/core/composer/qgscomposerframe.h
Expand Up @@ -46,8 +46,6 @@ class QgsComposerFrame: public QgsComposerItem

private:
QgsComposerFrame(); //forbidden

QgsComposition* mComposition;
QgsComposerMultiFrame* mMultiFrame;
QRectF mSection;
};
Expand Down
5 changes: 4 additions & 1 deletion src/core/composer/qgscomposermultiframe.cpp
Expand Up @@ -160,13 +160,16 @@ void QgsComposerMultiFrame::update()

void QgsComposerMultiFrame::deleteFrames()
{
ResizeMode bkResizeMode = mResizeMode;
mResizeMode = UseExistingFrames;
QList<QgsComposerFrame*>::iterator frameIt = mFrameItems.begin();
for ( ; frameIt != mFrameItems.end(); ++frameIt )
{
mComposition->removeComposerItem( *frameIt );
mComposition->removeComposerItem( *frameIt, false );
delete *frameIt;
}
mFrameItems.clear();
mResizeMode = bkResizeMode;
}

bool QgsComposerMultiFrame::_writeXML( QDomElement& elem, QDomDocument& doc, bool ignoreFrames ) const
Expand Down
2 changes: 1 addition & 1 deletion src/core/composer/qgscomposermultiframecommand.cpp
Expand Up @@ -38,7 +38,7 @@ void QgsComposerMultiFrameCommand::undo()

void QgsComposerMultiFrameCommand::redo()
{
if ( !checkFirstRun() )
if ( checkFirstRun() )
{
return;
}
Expand Down
19 changes: 14 additions & 5 deletions src/core/composer/qgscomposition.cpp
Expand Up @@ -1176,7 +1176,7 @@ void QgsComposition::addComposerHtmlFrame( QgsComposerHtml* html, QgsComposerFra
emit selectedItemChanged( frame );
}

void QgsComposition::removeComposerItem( QgsComposerItem* item )
void QgsComposition::removeComposerItem( QgsComposerItem* item, bool createCommand )
{
QgsComposerMap* map = dynamic_cast<QgsComposerMap *>( item );
if ( !map || !map->isDrawing() ) //don't delete a composer map while it draws
Expand All @@ -1203,14 +1203,23 @@ void QgsComposition::removeComposerItem( QgsComposerItem* item )
}
else
{
emit itemRemoved( item );
if ( item->type() == QgsComposerItem::ComposerFrame ) //multiframe tracks item changes
if ( createCommand )
{

if ( item->type() == QgsComposerItem::ComposerFrame ) //multiframe tracks item changes
{
item->beginItemCommand( tr( "Frame deleted" ) );
emit itemRemoved( item );
item->endItemCommand();
}
else
{
emit itemRemoved( item );
pushAddRemoveCommand( item, tr( "Item deleted" ), QgsAddRemoveItemCommand::Removed );
}
}
else
{
pushAddRemoveCommand( item, tr( "Item deleted" ), QgsAddRemoveItemCommand::Removed );
emit itemRemoved( item );
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/core/composer/qgscomposition.h
Expand Up @@ -229,7 +229,7 @@ class CORE_EXPORT QgsComposition: public QGraphicsScene
void addComposerHtmlFrame( QgsComposerHtml* html, QgsComposerFrame* frame );

/**Remove item from the graphics scene. Additionally to QGraphicsScene::removeItem, this function considers undo/redo command*/
void removeComposerItem( QgsComposerItem* item );
void removeComposerItem( QgsComposerItem* item, bool createCommand = true );

/**Convenience function to create a QgsAddRemoveItemCommand, connect its signals and push it to the undo stack*/
void pushAddRemoveCommand( QgsComposerItem* item, const QString& text, QgsAddRemoveItemCommand::State state = QgsAddRemoveItemCommand::Added );
Expand Down

0 comments on commit c2f768f

Please sign in to comment.