From 398b783f1a8b279082f1098408bdb836095f616b Mon Sep 17 00:00:00 2001 From: Ali Kianian Date: Mon, 7 Apr 2025 11:24:29 +0300 Subject: [PATCH] QMLRewriter: Fix the very first child position case in member search If we want to insert an object to the top (pos = -1), we should find the current first object, and return the last non-object item found before the first object. If there's no object, it will be automatically return the last non-object. Change-Id: Icf78b219af4c0735b7a05e0a8692202dada877fc Reviewed-by: Thomas Hartmann --- .../libs/designercore/filemanager/qmlrewriter.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/libs/designercore/filemanager/qmlrewriter.cpp b/src/plugins/qmldesigner/libs/designercore/filemanager/qmlrewriter.cpp index 77021f02324..aa2f794e4da 100644 --- a/src/plugins/qmldesigner/libs/designercore/filemanager/qmlrewriter.cpp +++ b/src/plugins/qmldesigner/libs/designercore/filemanager/qmlrewriter.cpp @@ -275,9 +275,6 @@ QmlJS::AST::UiObjectMemberList *QMLRewriter::searchMemberToInsertAfter( QmlJS::AST::UiObjectMemberList *QMLRewriter::searchChildrenToInsertAfter( QmlJS::AST::UiObjectMemberList *members, const PropertyNameList &propertyOrder, int pos) { - if (pos < 0) - return searchMemberToInsertAfter(members, propertyOrder); - // An empty property name should be available in the propertyOrder List, which is the right place // to define the objects there. const int objectDefinitionInsertionPoint = propertyOrder.indexOf(PropertyName()); @@ -291,6 +288,8 @@ QmlJS::AST::UiObjectMemberList *QMLRewriter::searchChildrenToInsertAfter( int idx = -1; if (QmlJS::AST::cast(member)) { + if (pos < 0) + break; lastObjectDef = iter; if (objectPos++ == pos) break;