diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index c77c7c72..dfe4b30d 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -2318,13 +2318,9 @@ void UBBoardController::moveGraphicsWidgetToControlView(UBGraphicsWidgetItem* gr { mActiveScene->setURStackEnable(false); graphicsWidget->remove(false); - UBGraphicsItem *toolW3C = duplicateItem(dynamic_cast(graphicsWidget)); - UBGraphicsWidgetItem *copyedGraphicsWidget = NULL; - - if (UBGraphicsWidgetItem::Type == toolW3C->type()) - copyedGraphicsWidget = static_cast(toolW3C); - - UBToolWidget *toolWidget = new UBToolWidget(copyedGraphicsWidget, mControlView); + mActiveScene->addItemToDeletion(graphicsWidget); + + UBToolWidget *toolWidget = new UBToolWidget(graphicsWidget, mControlView); mActiveScene->setURStackEnable(true); QPoint controlViewPos = mControlView->mapFromScene(graphicsWidget->sceneBoundingRect().center()); @@ -2335,11 +2331,15 @@ void UBBoardController::moveGraphicsWidgetToControlView(UBGraphicsWidgetItem* gr void UBBoardController::moveToolWidgetToScene(UBToolWidget* toolWidget) { - UBGraphicsWidgetItem *graphicsWidgetItem = addW3cWidget(toolWidget->toolWidget()->widgetUrl(), QPointF(0, 0)); - graphicsWidgetItem->setPos(toolWidget->pos()); - toolWidget->hide(); - delete toolWidget; - graphicsWidgetItem->setSelected(true); + UBGraphicsWidgetItem *widgetToScene = toolWidget->toolWidget(); + + QPoint mainWindowCenter = toolWidget->mapTo(mMainWindow, QPoint(toolWidget->width(), toolWidget->height()) / 2); + QPoint controlViewCenter = mControlView->mapFrom(mMainWindow, mainWindowCenter); + QPointF scenePos = mControlView->mapToScene(controlViewCenter); + + mActiveScene->addGraphicsWidget(widgetToScene, scenePos); + + toolWidget->remove(); } diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 746ad4db..2bde4eea 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1310,7 +1310,7 @@ void UBGraphicsScene::addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, co if (graphicsWidget->canBeContent()) { -// graphicsWidget->widgetWebView()->loadMainHtml(); + graphicsWidget->loadMainHtml(); graphicsWidget->setSelected(true); if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented diff --git a/src/gui/UBToolWidget.cpp b/src/gui/UBToolWidget.cpp index 0b9d3440..84afd33d 100644 --- a/src/gui/UBToolWidget.cpp +++ b/src/gui/UBToolWidget.cpp @@ -222,6 +222,13 @@ QPoint UBToolWidget::naturalCenter() const return QPoint(0, 0); } +void UBToolWidget::remove() +{ + mToolWidget = NULL; + hide(); + deleteLater(); +} + void UBToolWidget::centerOn(const QPoint& pos) { QWidget::move(pos - QPoint(width() / 2, height() / 2)); diff --git a/src/gui/UBToolWidget.h b/src/gui/UBToolWidget.h index df171ae3..3e413dff 100644 --- a/src/gui/UBToolWidget.h +++ b/src/gui/UBToolWidget.h @@ -32,6 +32,7 @@ class UBToolWidget : public QWidget UBToolWidget(UBGraphicsWidgetItem* pWidget, QWidget* pParent = 0); virtual ~UBToolWidget(); + void remove(); void centerOn(const QPoint& pos); QPoint naturalCenter() const;