diff --git a/src/plugins/platforms/windows/qtwindowsglobal.h b/src/plugins/platforms/windows/qtwindowsglobal.h index 96a72600eb9..5b1711fb5aa 100644 --- a/src/plugins/platforms/windows/qtwindowsglobal.h +++ b/src/plugins/platforms/windows/qtwindowsglobal.h @@ -116,6 +116,7 @@ enum WindowsEventType // Simplify event types NonClientMouseEvent = NonClientEventFlag + MouseEventFlag + 1, NonClientHitTest = NonClientEventFlag + 2, NonClientCreate = NonClientEventFlag + 3, + NonClientActivate = NonClientEventFlag + 4, NonClientPointerEvent = NonClientEventFlag + PointerEventFlag + 4, KeyEvent = KeyEventFlag + 1, KeyDownEvent = KeyEventFlag + KeyDownEventFlag + 1, @@ -215,6 +216,8 @@ inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamI return QtWindows::CalculateSize; case WM_NCHITTEST: return QtWindows::NonClientHitTest; + case WM_NCACTIVATE: + return QtWindows::NonClientActivate; case WM_GETMINMAXINFO: return QtWindows::QuerySizeHints; case WM_KEYDOWN: // keyboard event diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index 58514c96e1d..17eef9a95e8 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -1172,6 +1172,8 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message, platformWindow->updateCustomTitlebar(); return platformWindow->handleNonClientHitTest(QPoint(msg.pt.x, msg.pt.y), result); } + case QtWindows::NonClientActivate: + return platformWindow->handleNonClientActivate(result); case QtWindows::GeometryChangingEvent: return platformWindow->handleGeometryChanging(&msg); case QtWindows::ExposeEvent: diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 55abd6dd04a..b14bc42c0a4 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -3454,6 +3454,18 @@ bool QWindowsWindow::handleNonClientHitTest(const QPoint &globalPos, LRESULT *re return false; } +bool QWindowsWindow::handleNonClientActivate(LRESULT *result) const +{ + // If this window is frameless we choose to consume the event, + // since the default logic causes the window title to appear. + // QTBUG-127116 + if (m_data.flags & Qt::FramelessWindowHint) { + *result = true; + return true; + } + return false; +} + static void _q_drawCustomTitleBarButton(QPainter& p, const QRectF& r) { QPainterPath path(QPointF(r.x(), r.y())); diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index d8a62160927..7805530681a 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -314,6 +314,7 @@ public: void releaseDC(); void getSizeHints(MINMAXINFO *mmi) const; bool handleNonClientHitTest(const QPoint &globalPos, LRESULT *result) const; + bool handleNonClientActivate(LRESULT *result) const; void updateCustomTitlebar(); #ifndef QT_NO_CURSOR