Sine Striker
2023-12-20 8209cdfb1d85a40cc770f854d773c3a10f5ab576
src/core/contexts/abstractwindowcontext.cpp
@@ -18,10 +18,7 @@
        }
        m_host = host;
        m_delegate.reset(delegate);
        m_windowHandle = m_delegate->hostWindow(m_host);
        if (m_windowHandle) {
            winIdChanged(nullptr);
        }
        setEnabled(true);
    }
    void AbstractWindowContext::setWindowAttribute(const QString &key, const QVariant &var) {
@@ -193,11 +190,39 @@
    }
    void AbstractWindowContext::notifyWinIdChange() {
        if (!m_internalEnabled)
            return;
        auto oldWindow = m_windowHandle;
        m_windowHandle = m_delegate->window(m_host);
        if (oldWindow == m_windowHandle)
            return;
        winIdChanged(oldWindow);
        auto isDestroyed = oldWindow && m_windowHandleCache.isNull();
        m_windowHandle = m_delegate->window(m_host);
        m_windowHandleCache = m_windowHandle;
        winIdChanged(oldWindow, isDestroyed);
    }
    void AbstractWindowContext::setEnabled(bool enabled) {
        if (enabled == m_internalEnabled)
            return;
        m_internalEnabled = enabled;
        if (enabled) {
            m_windowHandle = m_delegate->window(m_host);
            m_windowHandleCache = m_windowHandle;
            if (m_windowHandle) {
                winIdChanged(nullptr, false);
            }
            return;
        }
        if (!m_windowHandle)
            return;
        auto oldWindow = m_windowHandle;
        m_windowHandle = nullptr;
        m_windowHandleCache.clear();
        winIdChanged(oldWindow, false);
    }
}