Fixed issue 862

preferencesAboutTextFull
shibakaneki 12 years ago
parent e69ffc40e9
commit 667be75e61
  1. 30
      src/board/UBBoardController.cpp
  2. 2
      src/board/UBBoardController.h
  3. 2
      src/domain/UBGraphicsItemDelegate.cpp
  4. 1
      src/domain/UBGraphicsPolygonItem.cpp
  5. 30
      src/domain/UBGraphicsStrokesGroup.cpp

@ -533,7 +533,7 @@ void UBBoardController::duplicateScene()
duplicateScene(mActiveSceneIndex); duplicateScene(mActiveSceneIndex);
} }
void UBBoardController::duplicateItem(UBItem *item) void UBBoardController::duplicateItem(UBItem *item, QTransform trf)
{ {
if (!item) if (!item)
return; return;
@ -553,6 +553,7 @@ void UBBoardController::duplicateItem(UBItem *item)
qreal shifting = UBSettings::settings()->objectFrameWidth; qreal shifting = UBSettings::settings()->objectFrameWidth;
itemPos = commonItem->pos() + QPointF(shifting,shifting); itemPos = commonItem->pos() + QPointF(shifting,shifting);
itemSize = commonItem->boundingRect().size(); itemSize = commonItem->boundingRect().size();
commonItem->setSelected(false);
} }
UBMimeType::Enum itemMimeType; UBMimeType::Enum itemMimeType;
@ -611,18 +612,28 @@ void UBBoardController::duplicateItem(UBItem *item)
{ {
UBGraphicsGroupContainerItem* groupItem = dynamic_cast<UBGraphicsGroupContainerItem*>(item); UBGraphicsGroupContainerItem* groupItem = dynamic_cast<UBGraphicsGroupContainerItem*>(item);
if(groupItem){ if(groupItem){
QTransform groupTransform = groupItem->transform();
groupItem->resetTransform();
QList<QGraphicsItem*> children = groupItem->childItems(); QList<QGraphicsItem*> children = groupItem->childItems();
foreach(QGraphicsItem* pIt, children){ foreach(QGraphicsItem* pIt, children){
UBItem* pItem = dynamic_cast<UBItem*>(pIt); UBItem* pItem = dynamic_cast<UBItem*>(pIt);
if(NULL != pItem){ if(NULL != pItem){
duplicateItem(pItem); // The duplication already copies the item parameters duplicateItem(pItem, groupItem->transform()); // The duplication already copies the item parameters
if(NULL != mLastCreatedItem){
mLastCreatedItem->setSelected(true);
}
} }
} }
groupItem->setTransform(groupTransform);
groupItem->setSelected(false); groupItem->setSelected(false);
UBApplication::mainWindow->actionGroupItems->trigger(); 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; return;
break; break;
@ -633,10 +644,11 @@ void UBBoardController::duplicateItem(UBItem *item)
QGraphicsItem *gitem = dynamic_cast<QGraphicsItem*>(item->deepCopy()); QGraphicsItem *gitem = dynamic_cast<QGraphicsItem*>(item->deepCopy());
if (gitem) if (gitem)
{ {
qDebug() << "Adding a stroke: " << gitem;
mActiveScene->addItem(gitem); mActiveScene->addItem(gitem);
gitem->setPos(itemPos); gitem->setPos(itemPos);
mLastCreatedItem = gitem; mLastCreatedItem = gitem;
gitem->setSelected(true);
} }
return; return;
}break; }break;
@ -652,6 +664,7 @@ void UBBoardController::duplicateItem(UBItem *item)
if (createdGitem) if (createdGitem)
createdGitem->setPos(itemPos); createdGitem->setPos(itemPos);
mLastCreatedItem = dynamic_cast<QGraphicsItem*>(createdItem); mLastCreatedItem = dynamic_cast<QGraphicsItem*>(createdItem);
mLastCreatedItem->setSelected(true);
} }
} }
@ -2175,7 +2188,10 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
{ {
foreach(UBItem* item, mimeData->items()) foreach(UBItem* item, mimeData->items())
{ {
duplicateItem(item); QGraphicsItem* pItem = dynamic_cast<QGraphicsItem*>(item);
if(NULL != pItem){
duplicateItem(item, pItem->transform());
}
} }
return; return;

@ -158,7 +158,7 @@ class UBBoardController : public UBDocumentContainer
void moveSceneToIndex(int source, int target); void moveSceneToIndex(int source, int target);
void duplicateScene(int index); void duplicateScene(int index);
void duplicateItem(UBItem *item); void duplicateItem(UBItem *item, QTransform trf);
void deleteScene(int index); void deleteScene(int index);
bool cacheIsVisible() {return mCacheWidgetIsEnabled;} bool cacheIsVisible() {return mCacheWidgetIsEnabled;}

@ -417,7 +417,7 @@ bool UBGraphicsItemDelegate::isLocked() const
void UBGraphicsItemDelegate::duplicate() void UBGraphicsItemDelegate::duplicate()
{ {
UBApplication::boardController->duplicateItem(dynamic_cast<UBItem*>(delegated())); UBApplication::boardController->duplicateItem(dynamic_cast<UBItem*>(delegated()), delegated()->transform());
} }
void UBGraphicsItemDelegate::increaseZLevelUp() void UBGraphicsItemDelegate::increaseZLevelUp()

@ -173,6 +173,7 @@ void UBGraphicsPolygonItem::copyItemParameters(UBItem *copy) const
cp->setColorOnDarkBackground(this->colorOnDarkBackground()); cp->setColorOnDarkBackground(this->colorOnDarkBackground());
cp->setColorOnLightBackground(this->colorOnLightBackground()); cp->setColorOnLightBackground(this->colorOnLightBackground());
//cp->setTransform(transform());
cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType)); cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
} }

@ -65,25 +65,33 @@ void UBGraphicsStrokesGroup::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
UBItem* UBGraphicsStrokesGroup::deepCopy() const UBItem* UBGraphicsStrokesGroup::deepCopy() const
{ {
UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup(); UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup();
QTransform groupTransform = transform();
const_cast<UBGraphicsStrokesGroup*>(this)->resetTransform();
QList<QGraphicsItem*> chl = childItems(); QList<QGraphicsItem*> chl = childItems();
foreach(QGraphicsItem *child, chl) foreach(QGraphicsItem *child, chl)
{ {
UBGraphicsPolygonItem *polygon = dynamic_cast<UBGraphicsPolygonItem*>(child); UBGraphicsPolygonItem *polygon = dynamic_cast<UBGraphicsPolygonItem*>(child);
if (polygon)
copy->addToGroup(dynamic_cast<QGraphicsItem*>(polygon->deepCopy())); if (polygon){
} QGraphicsItem* pItem = dynamic_cast<QGraphicsItem*>(polygon->deepCopy());
copyItemParameters(copy); copy->addToGroup(pItem);
}
}
const_cast<UBGraphicsStrokesGroup*>(this)->setTransform(groupTransform);
copyItemParameters(copy);
return copy; return copy;
} }
void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const
{ {
UBGraphicsStrokesGroup *cp = dynamic_cast<UBGraphicsStrokesGroup*>(copy); QGraphicsItem *cp = dynamic_cast<QGraphicsItem*>(copy);
if(NULL != cp)
{ {
cp->setPos(this->pos()); cp->setPos(this->pos());

Loading…
Cancel
Save