From 90144b76798f38374088440bd39306f549dccfcd Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Mon, 19 Nov 2012 17:54:05 +0300 Subject: [PATCH] Undo for duplicated items works for groups. --- src/board/UBBoardController.cpp | 9 ++++++--- src/domain/UBGraphicsItemUndoCommand.cpp | 8 -------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index d6636c28..8d4dc09e 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -648,6 +648,8 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync) QList duplicatedItems; QList children = groupItem->childItems(); + + mActiveScene->setURStackEnable(false); foreach(QGraphicsItem* pIt, children){ UBItem* pItem = dynamic_cast(pIt); if(pItem){ // we diong sync duplication of all childs. @@ -668,6 +670,7 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync) mActiveScene->addItem(itemToAdd); itemToAdd->setSelected(true); } + mActiveScene->setURStackEnable(true); }break; case UBMimeType::UNKNOWN: @@ -687,9 +690,9 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync) if (retItem) { QGraphicsItem *graphicsRetItem = dynamic_cast(retItem); - if (graphicsRetItem && mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, 0, graphicsRetItem); - UBApplication::undoStack->push(uc); + if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, 0, graphicsRetItem); + UBApplication::undoStack->push(uc); } return retItem; } diff --git a/src/domain/UBGraphicsItemUndoCommand.cpp b/src/domain/UBGraphicsItemUndoCommand.cpp index 93bedf2a..1bcd148d 100644 --- a/src/domain/UBGraphicsItemUndoCommand.cpp +++ b/src/domain/UBGraphicsItemUndoCommand.cpp @@ -92,14 +92,6 @@ void UBGraphicsItemUndoCommand::undo() { QGraphicsItem* item = itAdded.next(); - //if removing group - if (item->type() == UBGraphicsGroupContainerItem::Type) { - UBGraphicsGroupContainerItem *curGroup = qgraphicsitem_cast(item); - if (curGroup) { - curGroup->destroy(); - } - } - UBApplication::boardController->freezeW3CWidget(item, true); item->setSelected(false); mScene->removeItem(item);