qmltc: Add READ before WRITE in generated Q_PROPERTYs
We currently have two orderings for the READ and WRITE elements of the macro depending on whether we compile a property or an alias. Make them uniform by having READ before WRITE in both cases. Change-Id: I1dd308c921b8948347029c603bc3bca2be87abda Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
parent
86e4eecb6a
commit
405fb70437
|
@ -19,7 +19,7 @@ class HelloWorld : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
QML_ELEMENT
|
QML_ELEMENT
|
||||||
Q_PROPERTY(QString hello WRITE setHello READ hello BINDABLE bindableHello)
|
Q_PROPERTY(QString hello READ hello WRITE setHello BINDABLE bindableHello)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
HelloWorld(QQmlEngine* engine, QObject* parent = nullptr, [[maybe_unused]] qxp::function_ref<void(PropertyInitializer&)> initializer = [](PropertyInitializer&){});
|
HelloWorld(QQmlEngine* engine, QObject* parent = nullptr, [[maybe_unused]] qxp::function_ref<void(PropertyInitializer&)> initializer = [](PropertyInitializer&){});
|
||||||
|
@ -28,8 +28,8 @@ Q_SIGNALS:
|
||||||
void created();
|
void created();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setHello(const QString& hello_);
|
|
||||||
QString hello();
|
QString hello();
|
||||||
|
void setHello(const QString& hello_);
|
||||||
QBindable<QString> bindableHello();
|
QBindable<QString> bindableHello();
|
||||||
Q_INVOKABLE void printHello(passByConstRefOrValue<QString> prefix, passByConstRefOrValue<QString> suffix);
|
Q_INVOKABLE void printHello(passByConstRefOrValue<QString> prefix, passByConstRefOrValue<QString> suffix);
|
||||||
|
|
||||||
|
|
|
@ -887,6 +887,14 @@ void QmltcCompiler::compileProperty(QmltcType ¤t, const QQmlJSMetaProperty
|
||||||
// 1. add setter and getter
|
// 1. add setter and getter
|
||||||
// If p.isList(), it's a QQmlListProperty. Then you can write the underlying list through
|
// If p.isList(), it's a QQmlListProperty. Then you can write the underlying list through
|
||||||
// the QQmlListProperty object retrieved with the getter. Setting it would make no sense.
|
// the QQmlListProperty object retrieved with the getter. Setting it would make no sense.
|
||||||
|
QmltcMethod getter{};
|
||||||
|
getter.returnType = underlyingType;
|
||||||
|
getter.name = compilationData.read;
|
||||||
|
getter.body << u"return " + variableName + u".value();";
|
||||||
|
getter.userVisible = true;
|
||||||
|
current.functions.emplaceBack(getter);
|
||||||
|
mocPieces << u"READ"_s << getter.name;
|
||||||
|
|
||||||
if (p.isWritable() && !qIsReferenceTypeList(p)) {
|
if (p.isWritable() && !qIsReferenceTypeList(p)) {
|
||||||
QmltcMethod setter {};
|
QmltcMethod setter {};
|
||||||
setter.returnType = u"void"_s;
|
setter.returnType = u"void"_s;
|
||||||
|
@ -901,14 +909,6 @@ void QmltcCompiler::compileProperty(QmltcType ¤t, const QQmlJSMetaProperty
|
||||||
mocPieces << u"WRITE"_s << setter.name;
|
mocPieces << u"WRITE"_s << setter.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
QmltcMethod getter {};
|
|
||||||
getter.returnType = underlyingType;
|
|
||||||
getter.name = compilationData.read;
|
|
||||||
getter.body << u"return " + variableName + u".value();";
|
|
||||||
getter.userVisible = true;
|
|
||||||
current.functions.emplaceBack(getter);
|
|
||||||
mocPieces << u"READ"_s << getter.name;
|
|
||||||
|
|
||||||
// 2. add bindable
|
// 2. add bindable
|
||||||
if (!qIsReferenceTypeList(p)) {
|
if (!qIsReferenceTypeList(p)) {
|
||||||
QmltcMethod bindable {};
|
QmltcMethod bindable {};
|
||||||
|
|
Loading…
Reference in New Issue