Windows: Fixed mouse events related to size grips
authorOliver Wolff <oliver.wolff@digia.com>
Thu, 15 Nov 2012 10:34:09 +0000 (11:34 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 15 Nov 2012 12:55:00 +0000 (13:55 +0100)
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>
src/plugins/platforms/windows/qwindowsmousehandler.cpp

index 2f2d5d2..d202da1 100644 (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;