forked from qt-creator/qt-creator
QmlDesigner: Check if property exists before reparenting
Change-Id: I503abbbf8e9312d66567529d0bde66f0090b6f70 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -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())
|
||||||
|
Reference in New Issue
Block a user