Windows: Fixed mouse events related to size grips

The code which was adapted from Qt4 seems not to work as expected on
current Windows versions. There are no additional mouse move events
after releasing the mouse button from the size grip.

One special behaviour in regards to SizeGrips here seems to be that
there is no WM_LBUTTONUP message but a WM_MOUSEMOVE received when
the mouse button is released from the size grip. Due to mouse event
handling in the Windows plugin that event triggers the desired mouse
release event so everything should be fine.

With the previous implementation the behaviour from the bug report
can be explained by the fact, that the mouseMove event is eaten in
qwindowsmousehandler and so the second mouse click isn't even
delivered. Basically the first click triggers the press event without
a release and the second click does not trigger a press but a release
event.

Task-number: QTBUG-27864

Change-Id: I987c6e01dec4a6b6189ed30959daf7a2fcc17df6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
This commit is contained in:
Oliver Wolff 2012-11-15 11:34:09 +01:00 committed by The Qt Project
parent 45fecb2472
commit 46fe591a53

View File

@ -245,15 +245,6 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
if (QWindowsContext::verboseEvents)
qDebug() << "Releasing automatic mouse capture " << window;
}
// Eat mouse move after size grip drag.
if (msg.message == WM_MOUSEMOVE) {
if (platformWindow->testFlag(QWindowsWindow::SizeGripOperation)) {
MSG mouseMsg;
while (PeekMessage(&mouseMsg, platformWindow->handle(), WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) ;
platformWindow->clearFlag(QWindowsWindow::SizeGripOperation);
return true;
}
}
const bool hasCapture = platformWindow->hasMouseCapture();
const bool currentNotCapturing = hasCapture && currentWindowUnderMouse != window;