diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 3c56d617..a9600ab6 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -553,15 +553,15 @@ void UBBoardController::duplicateItem(UBItem *item) qreal shifting = UBSettings::settings()->objectFrameWidth; itemPos = commonItem->pos() + QPointF(shifting,shifting); itemSize = commonItem->boundingRect().size(); + commonItem->setSelected(false); } UBMimeType::Enum itemMimeType; QString contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(item->sourceUrl().toLocalFile()); - if(NULL != qgraphicsitem_cast(commonItem)){ - itemMimeType = UBMimeType::Group; - }else{ - itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader); - } + if(NULL != qgraphicsitem_cast(commonItem)) + itemMimeType = UBMimeType::Group; + else + itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader); switch(static_cast(itemMimeType)) { @@ -633,10 +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; + gitem->setSelected(true); } return; }break; diff --git a/src/domain/UBGraphicsPolygonItem.cpp b/src/domain/UBGraphicsPolygonItem.cpp index b21f2760..e5dd4fd7 100644 --- a/src/domain/UBGraphicsPolygonItem.cpp +++ b/src/domain/UBGraphicsPolygonItem.cpp @@ -142,14 +142,14 @@ QColor UBGraphicsPolygonItem::color() const UBItem* UBGraphicsPolygonItem::deepCopy() const -{ - UBGraphicsPolygonItem* copy = new UBGraphicsPolygonItem(polygon(), parentItem()); +{ + UBGraphicsPolygonItem* copy = new UBGraphicsPolygonItem(polygon(), 0); + UBGraphicsStroke *stroke = new UBGraphicsStroke(); + copyItemParameters(copy); - copy->mOriginalLine = this->mOriginalLine; - copy->mOriginalWidth = this->mOriginalWidth; - copy->mIsNominalLine = this->mIsNominalLine; + copy->setStroke(stroke); return copy; } @@ -160,17 +160,15 @@ void UBGraphicsPolygonItem::copyItemParameters(UBItem *copy) const UBGraphicsPolygonItem *cp = dynamic_cast(copy); if (cp) { - cp->mOriginalLine = QLineF(); - cp->mOriginalWidth = -1; - cp->mIsNominalLine = false; + cp->mOriginalLine = this->mOriginalLine; + cp->mOriginalWidth = this->mOriginalWidth; + cp->mIsNominalLine = this->mIsNominalLine; - cp->setStroke(this->stroke()); - cp->setStrokesGroup(this->strokesGroup()); + cp->setTransform(transform()); cp->setBrush(this->brush()); cp->setPen(this->pen()); cp->mHasAlpha = this->mHasAlpha; - cp->setColorOnDarkBackground(this->colorOnDarkBackground()); cp->setColorOnLightBackground(this->colorOnLightBackground()); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index a982a2d1..47547198 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1615,6 +1615,7 @@ void UBGraphicsScene::addItems(const QSet& items) void UBGraphicsScene::removeItem(QGraphicsItem* item) { setModified(true); + item->setSelected(false); UBCoreGraphicsScene::removeItem(item); UBApplication::boardController->freezeW3CWidget(item, true); @@ -2235,7 +2236,6 @@ void UBGraphicsScene::keyReleaseEvent(QKeyEvent * keyEvent) default: { - item->setSelected(false); UBGraphicsItem *ubgi = dynamic_cast(item); if (0 != ubgi) ubgi->remove(); diff --git a/src/domain/UBGraphicsStrokesGroup.cpp b/src/domain/UBGraphicsStrokesGroup.cpp index a5320924..2f57360f 100644 --- a/src/domain/UBGraphicsStrokesGroup.cpp +++ b/src/domain/UBGraphicsStrokesGroup.cpp @@ -65,29 +65,30 @@ void UBGraphicsStrokesGroup::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) UBItem* UBGraphicsStrokesGroup::deepCopy() const { - UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup(); + UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup(); - - QList chl = childItems(); + QList chl = childItems(); foreach(QGraphicsItem *child, chl) { UBGraphicsPolygonItem *polygon = dynamic_cast(child); if (polygon) + { copy->addToGroup(dynamic_cast(polygon->deepCopy())); + polygon->setStrokesGroup(copy); + } } copyItemParameters(copy); - return copy; + return copy; } void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const { UBGraphicsStrokesGroup *cp = dynamic_cast(copy); { - cp->setPos(this->pos()); + cp->setTransform(transform()); - cp->setTransform(this->transform()); cp->setFlag(QGraphicsItem::ItemIsMovable, true); cp->setFlag(QGraphicsItem::ItemIsSelectable, true); cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));