diff --git a/src/tools/qml/qmlobserver/qdeclarativedesignview.cpp b/src/tools/qml/qmlobserver/qdeclarativedesignview.cpp
index 952a312625718de288e27b31f3e5c91ab3bedd1e..f1afaaa40e90a5836506e8a1e313c0abb6916ce4 100644
--- a/src/tools/qml/qmlobserver/qdeclarativedesignview.cpp
+++ b/src/tools/qml/qmlobserver/qdeclarativedesignview.cpp
@@ -67,6 +67,12 @@ void QDeclarativeDesignView::reloadView()
     emit reloadRequested();
 }
 
+void QDeclarativeDesignView::clearEditorItems()
+{
+    clearHighlight();
+    setSelectedItems(QList<QGraphicsItem*>());
+}
+
 void QDeclarativeDesignView::leaveEvent(QEvent *event)
 {
     if (!designModeBehavior()) {
@@ -89,7 +95,7 @@ void QDeclarativeDesignView::mousePressEvent(QMouseEvent *event)
 void QDeclarativeDesignView::mouseMoveEvent(QMouseEvent *event)
 {
     if (!designModeBehavior()) {
-        clearHighlight();
+        clearEditorItems();
         QDeclarativeView::mouseMoveEvent(event);
         return;
     }
@@ -231,6 +237,9 @@ void QDeclarativeDesignView::setDesignModeBehavior(bool value)
         if (rootObject())
             m_subcomponentEditorTool->pushContext(rootObject());
     }
+
+    if (!m_designModeBehavior)
+        clearEditorItems();
 }
 
 bool QDeclarativeDesignView::designModeBehavior() const
diff --git a/src/tools/qml/qmlobserver/qdeclarativedesignview.h b/src/tools/qml/qmlobserver/qdeclarativedesignview.h
index 853a71adb13de09ad8dd7a3a814e2a2c96ad14d2..fae5fca983ee8a8c0b435fc6d1880c09e716195b 100644
--- a/src/tools/qml/qmlobserver/qdeclarativedesignview.h
+++ b/src/tools/qml/qmlobserver/qdeclarativedesignview.h
@@ -94,6 +94,7 @@ private Q_SLOTS:
     void applyChangesFromClient();
 
 private:
+    void clearEditorItems();
     void createToolbar();
     void changeToSelectTool();
     QList<QGraphicsItem*> filterForCurrentContext(QList<QGraphicsItem*> &itemlist) const;