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)