summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorq234rty <q23456yuiop@gmail.com>2023-12-29 14:51:37 +0800
committerq234rty <q23456yuiop@gmail.com>2024-01-08 17:22:46 +0800
commit2ced20d755739c7e32a8f8e72a8ac186046b2b0f (patch)
treeca56f8b6d256a98ac0f1ce07acb9252a576bfcf2
parentfa53b5b5f3a8c570b21ed4fbcce6f0deb290ce93 (diff)
Use dynamic properties for NhekoFixupPaletteEventFilter
A new window could have the same `QWindow *` value as an already free'ed window, so using a `QSet<QWindow *>` with potentially free'ed windows might not be reliable. Use dynamic properties instead.
-rw-r--r--src/MainWindow.cpp6
-rw-r--r--src/MainWindow.h3
2 files changed, 2 insertions, 7 deletions
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index a4a0eff0..9b2626cf 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -201,14 +201,12 @@ NhekoFixupPaletteEventFilter::eventFilter(QObject *obj, QEvent *event)
// reason?!?
if (event->type() == QEvent::ChildAdded &&
obj->metaObject()->className() == QStringLiteral("QQuickRootItem")) {
- QSet<QWindow *> newWindows;
for (const auto window : QGuiApplication::topLevelWindows()) {
- newWindows.insert(window);
- if (m_postedWindows.contains(window))
+ if (window->property("posted").isValid())
continue;
QGuiApplication::postEvent(window, new QEvent(QEvent::ApplicationPaletteChange));
+ window->setProperty("posted", true);
}
- m_postedWindows.swap(newWindows);
}
return false;
}
diff --git a/src/MainWindow.h b/src/MainWindow.h
index 928446aa..c493b5b2 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -45,9 +45,6 @@ public:
}
bool eventFilter(QObject *obj, QEvent *event) override;
-
-private:
- QSet<QWindow *> m_postedWindows;
};
class MainWindow : public QQuickView