diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 059d4c173ad..ae9019e2bf6 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -360,33 +360,6 @@ static void findTargetItem(const NodeListProperty &listProperty, } } -static void moveItemRow(QStandardItem *targetItem , - int currentRowNumber, - int newRowNumber) -{ - if (targetItem && currentRowNumber != newRowNumber) {//### Items without a parent should not exist - QList items = targetItem->takeRow(currentRowNumber); - targetItem->insertRow(newRowNumber, items); - } -} - -/** - Updates the sibling position of the item, depending on the position in the model. - */ -void NavigatorTreeModel::updateItemRowOrder(const NodeListProperty &listProperty, const ModelNode &modelNode, int /*oldIndex*/) -{ - if (isInTree(modelNode)) { - ItemRow currentItemRow = itemRowForNode(modelNode); - int currentRowNumber = currentItemRow.idItem->row(); - int newRowNumber = listProperty.indexOf(modelNode); - QStandardItem *targetItem = 0; - - findTargetItem(listProperty, currentItemRow, this, &newRowNumber, &targetItem); - moveItemRow(targetItem, currentRowNumber, newRowNumber); - - } -} - static void handleWrongId(QStandardItem *item, const ModelNode &modelNode, const QString &errorTitle, const QString &errorMessage, NavigatorTreeModel *treeModel) { QMessageBox::warning(Core::ICore::dialogParent(), errorTitle, errorMessage); diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h index 0c19a803e1d..b324b86e435 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h @@ -113,7 +113,6 @@ public: void addSubTree(const ModelNode &node); void removeSubTree(const ModelNode &node); void updateItemRow(const ModelNode &node); - void updateItemRowOrder(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex); void setId(const QModelIndex &index, const QString &id); void setVisible(const QModelIndex &index, bool visible); diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index 24809188b51..eb126af2cc5 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -296,8 +296,13 @@ void NavigatorView::instancesToken(const QString &/*tokenName*/, int /*tokenNumb void NavigatorView::nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &node, int oldIndex) { - if (m_treeModel->isInTree(node)) - m_treeModel->updateItemRowOrder(listProperty, node, oldIndex); + if (m_treeModel->isInTree(node)) { + m_treeModel->removeSubTree(listProperty.parentModelNode()); + + if (node.isInHierarchy()) + m_treeModel->addSubTree(listProperty.parentModelNode()); + + } } void NavigatorView::changeToComponent(const QModelIndex &index)