|
|
|
@ -611,18 +611,28 @@ void UBBoardController::duplicateItem(UBItem *item) |
|
|
|
|
{ |
|
|
|
|
UBGraphicsGroupContainerItem* groupItem = dynamic_cast<UBGraphicsGroupContainerItem*>(item); |
|
|
|
|
if(groupItem){ |
|
|
|
|
QTransform groupTransform = groupItem->transform(); |
|
|
|
|
groupItem->resetTransform(); |
|
|
|
|
|
|
|
|
|
QList<QGraphicsItem*> children = groupItem->childItems(); |
|
|
|
|
foreach(QGraphicsItem* pIt, children){ |
|
|
|
|
UBItem* pItem = dynamic_cast<UBItem*>(pIt); |
|
|
|
|
if(NULL != pItem){ |
|
|
|
|
duplicateItem(pItem); // The duplication already copies the item parameters
|
|
|
|
|
if(NULL != mLastCreatedItem){ |
|
|
|
|
mLastCreatedItem->setSelected(true); |
|
|
|
|
} |
|
|
|
|
duplicateItem(pItem); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
groupItem->setTransform(groupTransform); |
|
|
|
|
groupItem->setSelected(false); |
|
|
|
|
UBApplication::mainWindow->actionGroupItems->trigger(); |
|
|
|
|
QList<QGraphicsItem*> selItems = mActiveScene->selectedItems(); |
|
|
|
|
if(!selItems.empty()){ |
|
|
|
|
// I don't like this solution but for now this is the only way I found.
|
|
|
|
|
// Normally, at this state, only the duplicated group should be selected
|
|
|
|
|
UBGraphicsGroupContainerItem* duplicatedGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(selItems.at(0)); |
|
|
|
|
if(NULL != duplicatedGroup){ |
|
|
|
|
duplicatedGroup->setTransform(groupTransform); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
break; |
|
|
|
@ -652,6 +662,7 @@ void UBBoardController::duplicateItem(UBItem *item) |
|
|
|
|
if (createdGitem) |
|
|
|
|
createdGitem->setPos(itemPos); |
|
|
|
|
mLastCreatedItem = dynamic_cast<QGraphicsItem*>(createdItem); |
|
|
|
|
mLastCreatedItem->setSelected(true); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -2176,8 +2187,11 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint |
|
|
|
|
{ |
|
|
|
|
foreach(UBItem* item, mimeData->items()) |
|
|
|
|
{ |
|
|
|
|
QGraphicsItem* pItem = dynamic_cast<QGraphicsItem*>(item); |
|
|
|
|
if(NULL != pItem){ |
|
|
|
|
duplicateItem(item); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|