diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index 2bef981208..c23ba6d2ec 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -36,6 +36,8 @@ # include # include + # include + # include # include # include # include @@ -52,7 +54,6 @@ #include #include #include -#include #include @@ -76,7 +77,6 @@ #include "QGIViewDimension.h" #include "ViewProviderDimension.h" #include "DrawGuiUtil.h" -#include "TaskDimension.h" #define NORMAL 0 #define PRE 1 @@ -149,10 +149,7 @@ void QGIDatumLabel::mousePressEvent(QGraphicsSceneMouseEvent * event) m_ctrl = true; } - if(scene() && this == scene()->mouseGrabberItem()) { - Q_EMIT dragFinished(); - } - QGraphicsItem::mousePressEvent(event); + QGraphicsItem::mousePressEvent(event); } void QGIDatumLabel::mouseMoveEvent(QGraphicsSceneMouseEvent * event) @@ -164,8 +161,11 @@ void QGIDatumLabel::mouseReleaseEvent(QGraphicsSceneMouseEvent * event) { // Base::Console().Message("QGIDL::mouseReleaseEvent()\n"); m_ctrl = false; - if(scene() && this == scene()->mouseGrabberItem()) { - Q_EMIT dragFinished(); + if (QLineF(event->screenPos(), event->buttonDownScreenPos(Qt::LeftButton)) + .length() > 0) { + if (scene() && this == scene()->mouseGrabberItem()) { + Q_EMIT dragFinished(); + } } QGraphicsItem::mouseReleaseEvent(event); @@ -175,13 +175,17 @@ void QGIDatumLabel::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) { QGIViewDimension* qgivDimension = dynamic_cast(parentItem()); if (qgivDimension == nullptr) { + qWarning() << "QGIDatumLabel::mouseDoubleClickEvent: No parent item"; return; } - auto ViewProvider = static_cast(qgivDimension->getViewProvider(qgivDimension->getViewObject())); + + auto ViewProvider = dynamic_cast(qgivDimension->getViewProvider(qgivDimension->getViewObject())); if (ViewProvider == nullptr) { + qWarning() << "QGIDatumLabel::mouseDoubleClickEvent: No valid view provider"; return; } - Gui::Control().showDialog(new TaskDlgDimension(qgivDimension, ViewProvider)); + + ViewProvider->startDefaultEditMode(); QGraphicsItem::mouseDoubleClickEvent(event); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.h b/src/Mod/TechDraw/Gui/ViewProviderDimension.h index 6bc047e1aa..156369a840 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.h @@ -76,6 +76,7 @@ public: virtual bool setEdit(int ModNum); virtual void unsetEdit(int ModNum); virtual bool doubleClicked(void); + void startDefaultEditMode(); virtual TechDraw::DrawViewDimension* getViewObject() const; @@ -89,9 +90,6 @@ public: protected: virtual void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop); -private: - void startDefaultEditMode(); - private: static const char *StandardAndStyleEnums[]; static const char *RenderingExtentEnums[];