forked from qt-creator/qt-creator
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:
committed by
Tim Jenssen
parent
99aaf86a33
commit
e012e42ff2
@@ -179,6 +179,42 @@ static bool idIsQmlKeyWord(const QString& id)
|
|||||||
return keywords.contains(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 bool idContainsWrongLetter(const QString& id)
|
||||||
{
|
{
|
||||||
static QRegExp idExpr(QStringLiteral("[a-z_][a-zA-Z0-9_]*"));
|
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)
|
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
|
bool ModelNode::hasId() const
|
||||||
|
Reference in New Issue
Block a user