diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 332ea3b0..ddf0cdb8 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -54,6 +54,8 @@ #include "domain/UBGraphicsGroupContainerItem.h" #include "domain/UBItem.h" #include "board/UBFeaturesController.h" +#include "domain/UBGraphicsStrokesGroup.h" + #include "gui/UBFeaturesWidget.h" #include "tools/UBToolsManager.h" @@ -536,6 +538,8 @@ void UBBoardController::duplicateItem(UBItem *item) if (!item) return; + mLastCreatedItem = NULL; + QUrl sourceUrl; QByteArray pData; @@ -612,9 +616,8 @@ void UBBoardController::duplicateItem(UBItem *item) UBItem* pItem = dynamic_cast(pIt); if(NULL != pItem){ duplicateItem(pItem); // The duplication already copies the item parameters - QGraphicsItem* pDuplicatedItem = dynamic_cast((mActiveScene->children().last())); - if(NULL != pDuplicatedItem){ - pDuplicatedItem->setSelected(true); + if(NULL != mLastCreatedItem){ + mLastCreatedItem->setSelected(true); } } } @@ -630,8 +633,10 @@ void UBBoardController::duplicateItem(UBItem *item) QGraphicsItem *gitem = dynamic_cast(item->deepCopy()); if (gitem) { + qDebug() << "Adding a stroke: " << gitem; mActiveScene->addItem(gitem); gitem->setPos(itemPos); + mLastCreatedItem = gitem; } return; }break; @@ -646,7 +651,8 @@ void UBBoardController::duplicateItem(UBItem *item) QGraphicsItem *createdGitem = dynamic_cast(createdItem); if (createdGitem) createdGitem->setPos(itemPos); - } + mLastCreatedItem = dynamic_cast(createdItem); + } } void UBBoardController::deleteScene(int nIndex) diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 8f100c73..042ba24a 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -279,6 +279,7 @@ class UBBoardController : public UBDocumentContainer bool mCleanupDone; QMap > mActionTexts; bool mCacheWidgetIsEnabled; + QGraphicsItem* mLastCreatedItem; private slots: void stylusToolDoubleClicked(int tool); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 6b573710..540ce297 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -844,14 +844,18 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) // UBGraphicsPolygonItems and added to the scene foreach(const QPolygonF &pol, croppedPathSimplified.toFillPolygons()) { - UBGraphicsPolygonItem* croppedPolygonItem = collidingPolygonItem->deepCopy(pol); + UBGraphicsPolygonItem* croppedPolygonItem; #pragma omp critical - if(NULL != pGroup){ - croppedPolygonItem->setStrokesGroup(pGroup); - //pGroup->addToGroup(croppedPolygonItem); + { + croppedPolygonItem = collidingPolygonItem->deepCopy(pol); + + if(NULL != pGroup){ + croppedPolygonItem->setStrokesGroup(pGroup); + //pGroup->addToGroup(croppedPolygonItem); + } + // Add this new polygon to the 'added' list + toBeAddedItems << croppedPolygonItem; } - // Add this new polygon to the 'added' list - toBeAddedItems << croppedPolygonItem; } #pragma omp critical // Remove the original polygonitem because it has been replaced by many smaller polygons