From 2ced20d755739c7e32a8f8e72a8ac186046b2b0f Mon Sep 17 00:00:00 2001 From: q234rty Date: Fri, 29 Dec 2023 14:51:37 +0800 Subject: [PATCH] Use dynamic properties for NhekoFixupPaletteEventFilter A new window could have the same `QWindow *` value as an already free'ed window, so using a `QSet` with potentially free'ed windows might not be reliable. Use dynamic properties instead. --- src/MainWindow.cpp | 6 ++---- src/MainWindow.h | 3 --- 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 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 m_postedWindows; }; class MainWindow : public QQuickView