From 8b72eabae325c34d8eab1544203993015cc91741 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周一, 18 12月 2023 00:54:51 +0800 Subject: [PATCH] Add win32 winIdChange workaround --- src/core/contexts/abstractwindowcontext_p.h | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/contexts/abstractwindowcontext_p.h b/src/core/contexts/abstractwindowcontext_p.h index a86ddd8..29f6749 100644 --- a/src/core/contexts/abstractwindowcontext_p.h +++ b/src/core/contexts/abstractwindowcontext_p.h @@ -5,6 +5,7 @@ #include <memory> #include <QtCore/QSet> +#include <QtCore/QPointer> #include <QtGui/QRegion> #include <QtGui/QWindow> @@ -21,7 +22,7 @@ ~AbstractWindowContext() override; public: - bool setup(QObject *host, WindowItemDelegate *delegate); + void setup(QObject *host, WindowItemDelegate *delegate); inline QObject *host() const; inline QWindow *window() const; @@ -56,14 +57,16 @@ virtual void virtual_hook(int id, void *data); void showSystemMenu(const QPoint &pos); + void notifyWinIdChange(); protected: - virtual bool setupHost() = 0; + virtual void winIdChanged(QWindow *oldWindow, bool destroyed) = 0; protected: QObject *m_host{}; std::unique_ptr<WindowItemDelegate> m_delegate; QWindow *m_windowHandle{}; + QPointer<QWindow> m_windowHandleGuard; QSet<const QObject *> m_hitTestVisibleItems; #ifdef Q_OS_MAC -- Gitblit v1.9.1