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.cpp | 30 +++++++++++++----------------- 1 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/core/contexts/abstractwindowcontext.cpp b/src/core/contexts/abstractwindowcontext.cpp index 7c40c89..d69ab75 100644 --- a/src/core/contexts/abstractwindowcontext.cpp +++ b/src/core/contexts/abstractwindowcontext.cpp @@ -11,27 +11,17 @@ AbstractWindowContext::~AbstractWindowContext() = default; - bool AbstractWindowContext::setup(QObject *host, WindowItemDelegate *delegate) { - if (!host || !delegate) { - return false; + void AbstractWindowContext::setup(QObject *host, WindowItemDelegate *delegate) { + if (m_host || !host || !delegate) { + return; } - - auto windowHandle = delegate->hostWindow(host); - if (!windowHandle) { - return false; - } - m_host = host; m_delegate.reset(delegate); - m_windowHandle = windowHandle; - - if (!setupHost()) { - m_host = nullptr; - m_delegate.reset(); - m_windowHandle = nullptr; - return false; + m_windowHandle = m_delegate->hostWindow(m_host); + if (m_windowHandle) { + m_windowHandleGuard = m_windowHandle; + winIdChanged(nullptr, false); } - return true; } bool AbstractWindowContext::setHitTestVisible(const QObject *obj, bool visible) { @@ -183,4 +173,10 @@ virtual_hook(ShowSystemMenuHook, &const_cast<QPoint &>(pos)); } + void AbstractWindowContext::notifyWinIdChange() { + auto oldWindow = m_windowHandle; + m_windowHandle = m_delegate->window(m_host); + winIdChanged(oldWindow, oldWindow && m_windowHandleGuard.isNull()); + } + } \ No newline at end of file -- Gitblit v1.9.1