Windows QPA: Fix broken focus for native child windows

This issue was caused by missing logic in the implementation of the
pointer message handler, necessary to support "click to focus" for
native child windows.

Fixes: QTBUG-71352
Change-Id: I2e261caa8dfab096647799ec1e7d781bec40654e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
bb10
Andre de la Rocha 2018-11-13 20:22:20 +01:00 committed by Jani Heikkinen
parent 98a445fa23
commit d9200fcac5
1 changed files with 5 additions and 0 deletions

View File

@ -467,6 +467,11 @@ bool QWindowsPointerHandler::translateMouseTouchPadEvent(QWindow *window, HWND h
keyModifiers, Qt::MouseEventNotSynthesized);
return false; // To allow window dragging, etc.
} else {
if (eventType == QEvent::MouseButtonPress) {
// Implement "Click to focus" for native child windows (unless it is a native widget window).
if (!window->isTopLevel() && !window->inherits("QWidgetWindow") && QGuiApplication::focusWindow() != window)
window->requestActivate();
}
if (currentWindowUnderPointer != m_windowUnderPointer) {
if (m_windowUnderPointer && m_windowUnderPointer == m_currentWindow) {
QWindowSystemInterface::handleLeaveEvent(m_windowUnderPointer);