| | |
| | | #include <QtCore/QHash> |
| | | #include <QtCore/QScopeGuard> |
| | | #include <QtGui/QGuiApplication> |
| | | #include <QtGui/QPainter> |
| | | |
| | | #include <QtCore/private/qsystemlibrary_p.h> |
| | | #include <QtGui/private/qhighdpiscaling_p.h> |
| | |
| | | } |
| | | } |
| | | |
| | | void Win32WindowContext::showSystemMenu(const QPoint &pos) { |
| | | auto winId = m_windowHandle->winId(); |
| | | auto hWnd = reinterpret_cast<HWND>(winId); |
| | | showSystemMenu2(hWnd, {pos.x(), pos.y()}, false, m_delegate->isHostSizeFixed(m_host)); |
| | | QString Win32WindowContext::key() const { |
| | | return "win32"; |
| | | } |
| | | |
| | | void Win32WindowContext::virtual_hook(int id, void *data) { |
| | | switch (id) { |
| | | case ShowSystemMenuHook: { |
| | | const auto &pos = *reinterpret_cast<const QPoint *>(data); |
| | | auto winId = m_windowHandle->winId(); |
| | | auto hWnd = reinterpret_cast<HWND>(winId); |
| | | showSystemMenu2(hWnd, {pos.x(), pos.y()}, false, |
| | | m_delegate->isHostSizeFixed(m_host)); |
| | | return; |
| | | } |
| | | case NeedsDrawBordersHook: { |
| | | auto &result = *reinterpret_cast<bool *>(data); |
| | | result = isWin10OrGreater() && !isWin11OrGreater(); |
| | | return; |
| | | } |
| | | case DrawBordersHook: { |
| | | auto a = reinterpret_cast<void **>(data); |
| | | auto &painter = *reinterpret_cast<QPainter *>(a[0]); |
| | | auto &rect = *reinterpret_cast<const QRect *>(a[1]); |
| | | auto ®ion = *reinterpret_cast<const QRegion *>(a[2]); |
| | | |
| | | qDebug() << "paint" << &painter << rect << region; |
| | | |
| | | // TODO: Draw border |
| | | // ... |
| | | |
| | | break; |
| | | } |
| | | default: |
| | | break; |
| | | } |
| | | AbstractWindowContext::virtual_hook(id, data); |
| | | } |
| | | |
| | | bool Win32WindowContext::setupHost() { |
| | |
| | | return false; // Not handled |
| | | } |
| | | |
| | | static constexpr const auto kMessageTag = WPARAM(0x97CCEA99); |
| | | static constexpr const auto kMessageTag = WPARAM(0xF1C9ADD4); |
| | | |
| | | static inline constexpr bool isTaggedMessage(WPARAM wParam) { |
| | | return (wParam == kMessageTag); |