diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
index 0c0311f5cac9c4fb5207f1257de019aa8b6b2d50..0e25eefee80c6c3c34e2649193baaf176be79476 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
@@ -160,7 +160,7 @@ void NavigatorView::nodeAboutToBeRemoved(const ModelNode &removedNode)
     m_treeModel->removeSubTree(removedNode);
 }
 
-void NavigatorView::nodeReparented(const ModelNode &node, const NodeAbstractProperty & /*newPropertyParent*/, const NodeAbstractProperty & /*oldPropertyParent*/, AbstractView::PropertyChangeFlags /*propertyChange*/)
+void NavigatorView::nodeReparented(const ModelNode &node, const NodeAbstractProperty & newPropertyParent, const NodeAbstractProperty & /*oldPropertyParent*/, AbstractView::PropertyChangeFlags /*propertyChange*/)
 {
     bool blocked = blockSelectionChangedSignal(true);
 
@@ -172,6 +172,11 @@ void NavigatorView::nodeReparented(const ModelNode &node, const NodeAbstractProp
     // make sure selection is in sync again
     updateItemSelection();
 
+    if (newPropertyParent.parentModelNode().isValid()) {
+        QModelIndex index = m_treeModel->indexForNode(newPropertyParent.parentModelNode());
+        treeWidget()->expand(index);
+    }
+
     blockSelectionChangedSignal(blocked);
 }
 
@@ -223,6 +228,10 @@ void NavigatorView::nodeOrderChanged(const NodeListProperty &listProperty, const
         if (node.isInHierarchy())
             m_treeModel->addSubTree(listProperty.parentModelNode());
 
+        if (listProperty.parentModelNode().isValid()) {
+            QModelIndex index = m_treeModel->indexForNode(listProperty.parentModelNode());
+            treeWidget()->expand(index);
+        }
     }
 }