| | |
| | | } |
| | | 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) { |
| | |
| | | |
| | | auto newVar = var; |
| | | auto oldVar = it.value(); |
| | | void *a[] = { |
| | | void *args[] = { |
| | | &const_cast<QString &>(key), |
| | | &newVar, |
| | | &oldVar, |
| | | }; |
| | | virtual_hook(WindowAttributeChangedHook, a); |
| | | virtual_hook(WindowAttributeChangedHook, args); |
| | | } |
| | | |
| | | bool AbstractWindowContext::setHitTestVisible(const QObject *obj, bool visible) { |
| | |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |