diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index 706ebcc2ac95705a6fff6670ff8354fd938e57ed..a932de8b035029dce509af822fa1860d8e9fd517 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -49,6 +49,7 @@
 #include <QString>
 #include <QDir>
 #include <QAction>
+#include <QTimer>
 #include <zoomaction.h>
 #include <nodeabstractproperty.h>
 #include <nodelistproperty.h>
@@ -143,6 +144,16 @@ void FormEditorView::modelAboutToBeDetached(Model *model)
     QmlModelView::modelAboutToBeDetached(model);
 }
 
+void FormEditorView::importAdded(const Import &)
+{
+    reset();
+}
+
+void FormEditorView::importRemoved(const Import &)
+{
+    reset();
+}
+
 void FormEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode)
 {
     QmlItemNode qmlItemNode(removedNode);
@@ -601,6 +612,23 @@ void FormEditorView::stateChanged(const QmlModelState &newQmlModelState, const Q
 //    m_currentTool->formEditorItemsChanged(itemList);
 }
 
+void FormEditorView::reset()
+{
+   QTimer::singleShot(200, this, SLOT(delayedReset()));
+}
+
+void FormEditorView::delayedReset()
+{
+    m_selectionTool->clear();
+    m_moveTool->clear();
+    m_resizeTool->clear();
+    m_anchorTool->clear();
+    m_dragTool->clear();
+    m_scene->clearFormEditorItems();
+    if (rootQmlObjectNode().toQmlItemNode().isValid())
+        setupFormEditorItemTree(rootQmlObjectNode().toQmlItemNode());
+}
+
 
 }
 
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
index f98c3b0e1cedfcdaf3d7b2224787b342fd16f611..8fa8cac26ed22b2603cf461cf85277392836d16c 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
@@ -66,6 +66,9 @@ public:
     void modelAttached(Model *model);
     void modelAboutToBeDetached(Model *model);
 
+    void importAdded(const Import &import);
+    void importRemoved(const Import &import);
+
     void nodeCreated(const ModelNode &createdNode);
     void nodeAboutToBeRemoved(const ModelNode &removedNode);
     void nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange);
@@ -116,8 +119,10 @@ signals:
 protected:
     void otherPropertyChanged(const QmlObjectNode &qmlObjectNode, const QString &propertyName);
     void stateChanged(const QmlModelState &newQmlModelState, const QmlModelState &oldQmlModelState);
+    void reset();
 
 protected slots:
+    void delayedReset();
     QList<ModelNode> adjustStatesForModelNodes(const QList<ModelNode> &nodeList) const;
     void updateGraphicsIndicators();
     void setSelectOnlyContentItemsAction(bool selectOnlyContentItems);