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:
Olivier De Cannière 2024-11-28 15:35:18 +01:00
parent 86e4eecb6a
commit 405fb70437
2 changed files with 10 additions and 10 deletions

View File

@ -19,7 +19,7 @@ class HelloWorld : public QObject
{
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QString hello WRITE setHello READ hello BINDABLE bindableHello)
Q_PROPERTY(QString hello READ hello WRITE setHello BINDABLE bindableHello)
public:
HelloWorld(QQmlEngine* engine, QObject* parent = nullptr, [[maybe_unused]] qxp::function_ref<void(PropertyInitializer&)> initializer = [](PropertyInitializer&){});
@ -28,8 +28,8 @@ Q_SIGNALS:
void created();
public:
void setHello(const QString& hello_);
QString hello();
void setHello(const QString& hello_);
QBindable<QString> bindableHello();
Q_INVOKABLE void printHello(passByConstRefOrValue<QString> prefix, passByConstRefOrValue<QString> suffix);

View File

@ -887,6 +887,14 @@ void QmltcCompiler::compileProperty(QmltcType &current, const QQmlJSMetaProperty
// 1. add setter and getter
// 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.
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)) {
QmltcMethod setter {};
setter.returnType = u"void"_s;
@ -901,14 +909,6 @@ void QmltcCompiler::compileProperty(QmltcType &current, const QQmlJSMetaProperty
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
if (!qIsReferenceTypeList(p)) {
QmltcMethod bindable {};