summary refs log tree commit diff
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
parentDisable reuseItems again, since it still breaks on room switch (diff)
downloadnheko-2ced20d755739c7e32a8f8e72a8ac186046b2b0f.tar.xz
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