QmlDesigner: Check if property exists before reparenting

Change-Id: I503abbbf8e9312d66567529d0bde66f0090b6f70
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2019-06-19 09:17:36 +02:00
parent dfc5e76830
commit 3333f1b8ac

View File

@@ -447,7 +447,7 @@ static bool findTargetProperty(const QModelIndex &rowModelIndex,
NavigatorTreeModel *navigatorTreeModel, NavigatorTreeModel *navigatorTreeModel,
NodeAbstractProperty *targetProperty, NodeAbstractProperty *targetProperty,
int *targetRowNumber, int *targetRowNumber,
const QString &propertyName = {}) const PropertyName &propertyName = {})
{ {
QModelIndex targetItemIndex; QModelIndex targetItemIndex;
PropertyName targetPropertyName; PropertyName targetPropertyName;
@@ -461,10 +461,10 @@ static bool findTargetProperty(const QModelIndex &rowModelIndex,
if (!targetNode.metaInfo().hasDefaultProperty()) if (!targetNode.metaInfo().hasDefaultProperty())
return false; return false;
if (propertyName.isEmpty()) if (propertyName.isEmpty() || !targetNode.metaInfo().hasProperty(propertyName))
targetPropertyName = targetNode.metaInfo().defaultPropertyName(); targetPropertyName = targetNode.metaInfo().defaultPropertyName();
else else
targetPropertyName = propertyName.toUtf8(); targetPropertyName = propertyName;
} }
// Disallow dropping items between properties, which are listed first. // Disallow dropping items between properties, which are listed first.
@@ -520,7 +520,7 @@ void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, in
const QString targetPropertyName = hints.forceNonDefaultProperty(); const QString targetPropertyName = hints.forceNonDefaultProperty();
bool foundTarget = findTargetProperty(rowModelIndex, this, &targetProperty, &targetRowNumber, targetPropertyName); bool foundTarget = findTargetProperty(rowModelIndex, this, &targetProperty, &targetRowNumber, targetPropertyName.toUtf8());
if (foundTarget) { if (foundTarget) {
if (!NodeHints::fromItemLibraryEntry(itemLibraryEntry).canBeDroppedInNavigator()) if (!NodeHints::fromItemLibraryEntry(itemLibraryEntry).canBeDroppedInNavigator())