| | |
| | | } |
| | | m_host = host; |
| | | m_delegate.reset(delegate); |
| | | |
| | | m_windowHandle = m_delegate->hostWindow(m_host); |
| | | if (m_windowHandle) { |
| | | winIdChanged(nullptr); |
| | | winIdChanged(); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | 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::virtual_hook(int id, void *data) { |
| | | switch (id) { |
| | | case CentralizeHook: { |
| | | if (!m_windowHandle) |
| | | return; |
| | | |
| | | QRect screenGeometry = m_windowHandle->screen()->geometry(); |
| | | int x = screenGeometry.width() / 2 - m_windowHandle->width() / 2; |
| | | int y = screenGeometry.height() / 2 - m_windowHandle->height() / 2; |
| | | m_windowHandle->setPosition(x, y); |
| | | break; |
| | | int x = (screenGeometry.width() - m_windowHandle->width()) / 2; |
| | | int y = (screenGeometry.height() - m_windowHandle->height()) / 2; |
| | | QPoint pos(x, y); |
| | | pos += screenGeometry.topLeft(); |
| | | m_windowHandle->setPosition(pos); |
| | | return; |
| | | } |
| | | |
| | | case RaiseWindowHook: { |
| | | if (m_windowHandle->windowStates() & Qt::WindowMinimized) |
| | | m_windowHandle->showNormal(); |
| | | m_windowHandle->raise(); |
| | | break; |
| | | Qt::WindowStates state = m_delegate->getWindowState(m_host); |
| | | if (state & Qt::WindowMinimized) { |
| | | m_delegate->setWindowState(m_host, state & ~Qt::WindowMinimized); |
| | | } |
| | | m_delegate->bringWindowToTop(m_host); |
| | | return; |
| | | } |
| | | |
| | | case DefaultColorsHook: { |
| | |
| | | |
| | | void AbstractWindowContext::notifyWinIdChange() { |
| | | auto oldWindow = m_windowHandle; |
| | | m_windowHandle = m_delegate->window(m_host); |
| | | m_windowHandle = m_delegate->hostWindow(m_host); |
| | | if (oldWindow == m_windowHandle) |
| | | return; |
| | | winIdChanged(oldWindow); |
| | | winIdChanged(); |
| | | } |
| | | |
| | | } |