core/window: move implicit width/height to bindable properties

This commit is contained in:
outfoxxed 2025-05-28 01:58:14 -07:00
parent cb195d4b2a
commit 5ae8e4901a
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
2 changed files with 27 additions and 16 deletions

View file

@ -300,12 +300,9 @@ qint32 ProxyWindowBase::y() const {
else return this->window->y();
}
qint32 ProxyWindowBase::implicitWidth() const { return this->mImplicitWidth; }
void ProxyWindowBase::setImplicitWidth(qint32 implicitWidth) {
if (implicitWidth == this->mImplicitWidth) return;
this->mImplicitWidth = implicitWidth;
emit this->implicitWidthChanged();
if (implicitWidth == this->bImplicitWidth) return;
this->bImplicitWidth = implicitWidth;
if (this->window) this->trySetWidth(implicitWidth);
else emit this->widthChanged();
@ -313,12 +310,9 @@ void ProxyWindowBase::setImplicitWidth(qint32 implicitWidth) {
void ProxyWindowBase::trySetWidth(qint32 implicitWidth) { this->window->setWidth(implicitWidth); }
qint32 ProxyWindowBase::implicitHeight() const { return this->mImplicitHeight; }
void ProxyWindowBase::setImplicitHeight(qint32 implicitHeight) {
if (implicitHeight == this->mImplicitHeight) return;
this->mImplicitHeight = implicitHeight;
emit this->implicitHeightChanged();
if (implicitHeight == this->bImplicitHeight) return;
this->bImplicitHeight = implicitHeight;
if (this->window) this->trySetHeight(implicitHeight);
else emit this->heightChanged();

View file

@ -5,6 +5,7 @@
#include <qevent.h>
#include <qnamespace.h>
#include <qobject.h>
#include <qproperty.h>
#include <qqmllist.h>
#include <qqmlparserstatus.h>
#include <qquickitem.h>
@ -42,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);
Q_PROPERTY(qint32 implicitHeight READ implicitHeight WRITE setImplicitHeight NOTIFY implicitHeightChanged);
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 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);
@ -94,11 +95,13 @@ public:
[[nodiscard]] virtual qint32 x() const;
[[nodiscard]] virtual qint32 y() const;
[[nodiscard]] qint32 implicitWidth() const;
[[nodiscard]] qint32 implicitWidth() const { return this->bImplicitWidth; }
void setImplicitWidth(qint32 implicitWidth);
QBindable<qint32> bindableImplicitWidth() { return &this->bImplicitWidth; }
[[nodiscard]] qint32 implicitHeight() const;
[[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);
@ -158,8 +161,6 @@ protected slots:
protected:
bool mVisible = true;
qint32 mImplicitWidth = 100;
qint32 mImplicitHeight = 100;
QScreen* mScreen = nullptr;
QColor mColor = Qt::white;
PendingRegion* mMask = nullptr;
@ -174,6 +175,22 @@ protected:
bool inputMask : 1 = false;
} pendingPolish;
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(
ProxyWindowBase,
qint32,
bImplicitWidth,
100,
&ProxyWindowBase::implicitWidthChanged
);
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(
ProxyWindowBase,
qint32,
bImplicitHeight,
100,
&ProxyWindowBase::implicitHeightChanged
);
private:
void polishItems();
void updateMask();