all: use BINDABLE only with trivial setters

Fixes various bugs caused by the QML engine bypassing setters
when BINDABLE is specified (even if the bindable is const).
Also restructures all properties using BINDABLE to have
a default READ and WRITE to ensure this doesn't happen again.
This commit is contained in:
outfoxxed 2025-05-29 16:05:30 -07:00
parent 2e3c15f7a1
commit b67f92bc13
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
10 changed files with 167 additions and 180 deletions

View file

@ -43,8 +43,8 @@ class ProxyWindowBase: public Reloadable {
Q_PROPERTY(QQuickWindow* _backingWindow READ backingWindow);
Q_PROPERTY(QQuickItem* contentItem READ contentItem CONSTANT);
Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged);
Q_PROPERTY(qint32 implicitWidth READ implicitWidth WRITE setImplicitWidth NOTIFY implicitWidthChanged BINDABLE bindableImplicitWidth);
Q_PROPERTY(qint32 implicitHeight READ implicitHeight WRITE setImplicitHeight NOTIFY implicitHeightChanged BINDABLE bindableImplicitHeight);
Q_PROPERTY(qint32 implicitWidth READ implicitWidth WRITE setImplicitWidth NOTIFY implicitWidthChanged);
Q_PROPERTY(qint32 implicitHeight READ implicitHeight WRITE setImplicitHeight NOTIFY implicitHeightChanged);
Q_PROPERTY(qint32 width READ width WRITE setWidth NOTIFY widthChanged);
Q_PROPERTY(qint32 height READ height WRITE setHeight NOTIFY heightChanged);
Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio NOTIFY devicePixelRatioChanged);
@ -97,11 +97,9 @@ public:
[[nodiscard]] qint32 implicitWidth() const { return this->bImplicitWidth; }
void setImplicitWidth(qint32 implicitWidth);
QBindable<qint32> bindableImplicitWidth() { return &this->bImplicitWidth; }
[[nodiscard]] qint32 implicitHeight() const { return this->bImplicitHeight; }
void setImplicitHeight(qint32 implicitHeight);
QBindable<qint32> bindableImplicitHeight() { return &this->bImplicitHeight; }
[[nodiscard]] virtual qint32 width() const;
void setWidth(qint32 width);