Undo for duplicated items works for groups.

preferencesAboutTextFull
Aleksei Kanash 12 years ago
parent 3b1e471552
commit 90144b7679
  1. 9
      src/board/UBBoardController.cpp
  2. 8
      src/domain/UBGraphicsItemUndoCommand.cpp

@ -648,6 +648,8 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync)
QList<QGraphicsItem*> duplicatedItems; QList<QGraphicsItem*> duplicatedItems;
QList<QGraphicsItem*> children = groupItem->childItems(); QList<QGraphicsItem*> children = groupItem->childItems();
mActiveScene->setURStackEnable(false);
foreach(QGraphicsItem* pIt, children){ foreach(QGraphicsItem* pIt, children){
UBItem* pItem = dynamic_cast<UBItem*>(pIt); UBItem* pItem = dynamic_cast<UBItem*>(pIt);
if(pItem){ // we diong sync duplication of all childs. if(pItem){ // we diong sync duplication of all childs.
@ -668,6 +670,7 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync)
mActiveScene->addItem(itemToAdd); mActiveScene->addItem(itemToAdd);
itemToAdd->setSelected(true); itemToAdd->setSelected(true);
} }
mActiveScene->setURStackEnable(true);
}break; }break;
case UBMimeType::UNKNOWN: case UBMimeType::UNKNOWN:
@ -687,9 +690,9 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync)
if (retItem) if (retItem)
{ {
QGraphicsItem *graphicsRetItem = dynamic_cast<QGraphicsItem *>(retItem); QGraphicsItem *graphicsRetItem = dynamic_cast<QGraphicsItem *>(retItem);
if (graphicsRetItem && mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, 0, graphicsRetItem); UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, 0, graphicsRetItem);
UBApplication::undoStack->push(uc); UBApplication::undoStack->push(uc);
} }
return retItem; return retItem;
} }

@ -92,14 +92,6 @@ void UBGraphicsItemUndoCommand::undo()
{ {
QGraphicsItem* item = itAdded.next(); QGraphicsItem* item = itAdded.next();
//if removing group
if (item->type() == UBGraphicsGroupContainerItem::Type) {
UBGraphicsGroupContainerItem *curGroup = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(item);
if (curGroup) {
curGroup->destroy();
}
}
UBApplication::boardController->freezeW3CWidget(item, true); UBApplication::boardController->freezeW3CWidget(item, true);
item->setSelected(false); item->setSelected(false);
mScene->removeItem(item); mScene->removeItem(item);

Loading…
Cancel
Save