feat: use an intermediary content item for proxy windows (fixes in desc)

fix: combo boxes not opening after a soft reload
fix: anchors breaking after a soft reload
This commit is contained in:
outfoxxed 2024-02-17 04:13:37 -08:00
parent 5e58f0ba9f
commit ed62193978
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
2 changed files with 20 additions and 116 deletions

View file

@ -100,7 +100,7 @@ class ProxyWindowBase: public Reloadable {
Q_CLASSINFO("DefaultProperty", "data");
public:
explicit ProxyWindowBase(QObject* parent = nullptr): Reloadable(parent) {}
explicit ProxyWindowBase(QObject* parent = nullptr);
~ProxyWindowBase() override;
ProxyWindowBase(ProxyWindowBase&) = delete;
@ -144,6 +144,8 @@ signals:
private slots:
void onMaskChanged();
void onWidthChanged();
void onHeightChanged();
protected:
bool mVisible = false;
@ -152,19 +154,10 @@ protected:
QColor mColor = Qt::white;
PendingRegion* mMask = nullptr;
QQuickWindow* window = nullptr;
QQuickItem* contentItem = nullptr;
private:
void updateMask();
QQmlListProperty<QObject> dataBacker();
static void dataAppend(QQmlListProperty<QObject>* prop, QObject* obj);
static qsizetype dataCount(QQmlListProperty<QObject>* prop);
static QObject* dataAt(QQmlListProperty<QObject>* prop, qsizetype i);
static void dataClear(QQmlListProperty<QObject>* prop);
static void dataReplace(QQmlListProperty<QObject>* prop, qsizetype i, QObject* obj);
static void dataRemoveLast(QQmlListProperty<QObject>* prop);
QVector<QObject*> pendingChildren;
};
// qt attempts to resize the window but fails because wayland