From acb36acf1562d16de8e7007910f6802c57486914 Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Wed, 2 Feb 2011 13:41:36 +0100
Subject: [PATCH] QmlDesigner.FormEditor: Change to component for double click

---
 .../formeditor/abstractformeditortool.cpp          | 14 +++++++++++++-
 .../components/formeditor/abstractformeditortool.h |  2 +-
 .../qmldesigner/components/formeditor/movetool.cpp |  7 ++++---
 .../components/formeditor/selectiontool.cpp        |  6 +++---
 4 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp
index bdf9a07f38f..719ac6d4b09 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 f3abef47ccf..d0994fe9922 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 91a731bef5c..01e5b9fa151 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 8eb536d7cc4..483eca15505 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)
-- 
GitLab