QmlDesigner: Do not allow certain ids

Some ids are likely to create issues, because they collide
with property names.

Change-Id: I688ed0751c227afdd3ef59ba0f31b1334b26eaea
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2016-10-26 13:32:51 +02:00
committed by Tim Jenssen
parent 99aaf86a33
commit e012e42ff2

View File

@@ -179,6 +179,42 @@ static bool idIsQmlKeyWord(const QString& id)
return keywords.contains(id);
}
static bool isIdToAvoid(const QString& id)
{
static const QSet<QString> ids = {
"top",
"bottom",
"left",
"right",
"width",
"height",
"x",
"y",
"opacity",
"parent",
"item",
"flow",
"color",
"margin",
"padding",
"border",
"font",
"text",
"source",
"state",
"visible",
"focus",
"data",
"clip",
"layer",
"scale",
"enabled",
"anchors"
};
return ids.contains(id);
}
static bool idContainsWrongLetter(const QString& id)
{
static QRegExp idExpr(QStringLiteral("[a-z_][a-zA-Z0-9_]*"));
@@ -187,7 +223,7 @@ static bool idContainsWrongLetter(const QString& id)
bool ModelNode::isValidId(const QString &id)
{
return id.isEmpty() || (!idContainsWrongLetter(id) && !idIsQmlKeyWord(id));
return id.isEmpty() || (!idContainsWrongLetter(id) && !idIsQmlKeyWord(id)) && !isIdToAvoid(id);
}
bool ModelNode::hasId() const