diff --git a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp index bdf9a07f38f3353fe8e28403aaacbc0875e9a775..719ac6d4b09cc84560a5764a50f10f769a67f4ec 100644 --- a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp @@ -35,6 +35,8 @@ #include "formeditorview.h" #include "formeditorview.h" +#include <coreplugin/editormanager/editormanager.h> + #include <QtDebug> #include <QGraphicsSceneDragDropEvent> #include <nodemetainfo.h> @@ -192,5 +194,15 @@ void AbstractFormEditorTool::dragMoveEvent(QGraphicsSceneDragDropEvent * /* even Q_ASSERT(false); } - +void AbstractFormEditorTool::mouseDoubleClickEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSceneMouseEvent *event) +{ + FormEditorItem *formEditorItem = topFormEditorItem(itemList); + if (formEditorItem) { + ModelNode doubleClickNode = formEditorItem->qmlItemNode().modelNode(); + if (doubleClickNode.metaInfo().isComponent()) { + Core::EditorManager::instance()->openEditor(doubleClickNode.metaInfo().componentFileName()); + event->accept(); + } + } +} } diff --git a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h index f3abef47ccf83685861298d58876557d403ac2ca..d0994fe99222c608e784ce2274b25bdddc9fe433 100644 --- a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h +++ b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h @@ -59,7 +59,7 @@ public: virtual void mouseReleaseEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSceneMouseEvent *event) = 0; virtual void mouseDoubleClickEvent(const QList<QGraphicsItem*> &itemList, - QGraphicsSceneMouseEvent *event) = 0; + QGraphicsSceneMouseEvent *event); virtual void hoverMoveEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSceneMouseEvent *event) = 0; diff --git a/src/plugins/qmldesigner/components/formeditor/movetool.cpp b/src/plugins/qmldesigner/components/formeditor/movetool.cpp index 91a731bef5c35fcd14a4f447e5827709a0913c24..01e5b9fa15160e22be8d60c0ca1076161801d4a1 100644 --- a/src/plugins/qmldesigner/components/formeditor/movetool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/movetool.cpp @@ -40,6 +40,8 @@ #include "resizehandleitem.h" +#include "nodemetainfo.h" + #include <QApplication> #include <QGraphicsSceneMouseEvent> #include <QAction> @@ -218,10 +220,9 @@ void MoveTool::mouseReleaseEvent(const QList<QGraphicsItem*> &/*itemList*/, } } -void MoveTool::mouseDoubleClickEvent(const QList<QGraphicsItem*> & /*itemList*/, - QGraphicsSceneMouseEvent * /*event*/) +void MoveTool::mouseDoubleClickEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSceneMouseEvent *event) { - + AbstractFormEditorTool::mouseDoubleClickEvent(itemList, event); } void MoveTool::itemsAboutToRemoved(const QList<FormEditorItem*> &removedItemList) diff --git a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp index 8eb536d7cc49ccbf66f472d4f8764313f8e3fde7..483eca155056c620a9a08c797964cc5235a461c7 100644 --- a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp @@ -36,6 +36,7 @@ #include "formeditorview.h" #include "resizehandleitem.h" +#include "nodemetainfo.h" #include <QApplication> @@ -197,10 +198,9 @@ void SelectionTool::mouseReleaseEvent(const QList<QGraphicsItem*> &/*itemList*/, } -void SelectionTool::mouseDoubleClickEvent(const QList<QGraphicsItem*> &/*itemList*/, - QGraphicsSceneMouseEvent * /*event*/) +void SelectionTool::mouseDoubleClickEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSceneMouseEvent * event) { - + AbstractFormEditorTool::mouseDoubleClickEvent(itemList, event); } void SelectionTool::keyPressEvent(QKeyEvent *event)