diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index a929434f..be837e6a 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -568,7 +568,10 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync) if (srcFile.isEmpty()) srcFile = item->sourceUrl().toString(); - QString contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(srcFile); + QString contentTypeHeader; + if (!srcFile.isEmpty()) + contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(srcFile); + if(NULL != qgraphicsitem_cast(commonItem)) itemMimeType = UBMimeType::Group; else @@ -626,20 +629,30 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync) case UBMimeType::Group: { UBGraphicsGroupContainerItem* groupItem = dynamic_cast(item); - UBGraphicsGroupContainerItem* duplicatedGroup = new UBGraphicsGroupContainerItem(); + UBGraphicsGroupContainerItem* duplicatedGroup = NULL; + QList duplicatedItems; QList children = groupItem->childItems(); foreach(QGraphicsItem* pIt, children){ UBItem* pItem = dynamic_cast(pIt); - if(pItem) // we diong sync duplication of all childs. - duplicatedGroup->addToGroup(dynamic_cast(duplicateItem(pItem, false))); + if(pItem){ // we diong sync duplication of all childs. + QGraphicsItem * itemToGroup = dynamic_cast(duplicateItem(pItem, false)); + if (itemToGroup) + duplicatedItems.append(itemToGroup); + } } - + duplicatedGroup = mActiveScene->createGroup(duplicatedItems); duplicatedGroup->setTransform(groupItem->transform()); groupItem->setSelected(false); retItem = dynamic_cast(duplicatedGroup); + QGraphicsItem * itemToAdd = dynamic_cast(retItem); + if (itemToAdd) + { + mActiveScene->addItem(itemToAdd); + itemToAdd->setSelected(true); + } }break; case UBMimeType::UNKNOWN: @@ -657,15 +670,7 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync) } if (retItem) - { - QGraphicsItem * itemToAdd = dynamic_cast(retItem); - if (itemToAdd) - { - mActiveScene->addItem(itemToAdd); - itemToAdd->setSelected(true); - } return retItem; - } UBItem *createdItem = downloadFinished(true, sourceUrl, srcFile, contentTypeHeader, pData, itemPos, QSize(itemSize.width(), itemSize.height()), false); if (createdItem) diff --git a/src/frameworks/UBFileSystemUtils.cpp b/src/frameworks/UBFileSystemUtils.cpp index 2bde7364..101dbb2d 100644 --- a/src/frameworks/UBFileSystemUtils.cpp +++ b/src/frameworks/UBFileSystemUtils.cpp @@ -853,4 +853,4 @@ QString UBFileSystemUtils::readTextFile(QString path) } return ""; -} \ No newline at end of file +}