| | |
| | | // Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware) |
| | | // Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao) |
| | | // SPDX-License-Identifier: Apache-2.0 |
| | | |
| | | #include "abstractwindowcontext_p.h" |
| | | |
| | | #include <QtGui/QPen> |
| | |
| | | } |
| | | } |
| | | |
| | | bool AbstractWindowContext::setWindowAttribute(const QString &key, const QVariant &attribute) { |
| | | auto it = m_windowAttributes.find(key); |
| | | if (it == m_windowAttributes.end()) { |
| | | if (!attribute.isValid()) { |
| | | return true; |
| | | } |
| | | if (!m_windowHandle || !windowAttributeChanged(key, attribute, {})) { |
| | | return false; |
| | | } |
| | | m_windowAttributes.insert(key, attribute); |
| | | return true; |
| | | } |
| | | |
| | | if (it.value() == attribute) |
| | | return true; |
| | | if (!m_windowHandle || !windowAttributeChanged(key, attribute, it.value())) { |
| | | return false; |
| | | } |
| | | |
| | | if (attribute.isValid()) { |
| | | it.value() = attribute; |
| | | } else { |
| | | m_windowAttributes.erase(it); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | bool AbstractWindowContext::setHitTestVisible(const QObject *obj, bool visible) { |
| | | Q_ASSERT(obj); |
| | |
| | | } |
| | | |
| | | #ifdef Q_OS_MAC |
| | | void AbstractWindowContext::setSystemButtonArea(const QRect &rect) { |
| | | m_systemButtonArea = rect; |
| | | void |
| | | AbstractWindowContext::setSystemButtonAreaCallback(const ScreenRectCallback &callback) { |
| | | m_systemButtonAreaCallback = callback; |
| | | virtual_hook(SystemButtonAreaChangedHook, nullptr); |
| | | } |
| | | #endif |
| | |
| | | } |
| | | |
| | | case RaiseWindowHook: { |
| | | if (!m_windowHandle) |
| | | return; |
| | | |
| | | m_delegate->setWindowVisible(m_host, true); |
| | | Qt::WindowStates state = m_delegate->getWindowState(m_host); |
| | | if (state & Qt::WindowMinimized) { |
| | | m_delegate->setWindowState(m_host, state & ~Qt::WindowMinimized); |
| | |
| | | } |
| | | } |
| | | |
| | | QVariant AbstractWindowContext::windowAttribute(const QString &key) const { |
| | | return m_windowAttributes.value(key); |
| | | } |
| | | |
| | | bool AbstractWindowContext::setWindowAttribute(const QString &key, const QVariant &attribute) { |
| | | auto it = m_windowAttributes.find(key); |
| | | if (it == m_windowAttributes.end()) { |
| | | if (!attribute.isValid()) { |
| | | return true; |
| | | } |
| | | if (!m_windowHandle || !windowAttributeChanged(key, attribute, {})) { |
| | | return false; |
| | | } |
| | | m_windowAttributes.insert(key, attribute); |
| | | return true; |
| | | } |
| | | |
| | | if (it.value() == attribute) |
| | | return true; |
| | | if (!m_windowHandle || !windowAttributeChanged(key, attribute, it.value())) { |
| | | return false; |
| | | } |
| | | |
| | | if (attribute.isValid()) { |
| | | it.value() = attribute; |
| | | } else { |
| | | m_windowAttributes.erase(it); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | bool AbstractWindowContext::windowAttributeChanged(const QString &key, |
| | | const QVariant &attribute, |
| | | const QVariant &oldAttribute) { |