Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.3.2
-
OSX Cocoa
-
-
0f644f48530f4693f7c77fd41ca42085b3218e81
Description
I see spurious double clicks appearing in a QML MouseArea during a drag operation starting in that MouseArea and leaving the window, while crossing the OSX window titlebar. Though I have not yet managed to isolate a repro, I have managed debug sufficiently to understand the problem:
If frameStrutEventsEnabled() is set for the QCocoaWindow(), handleFrameStrutMouseEvent is called with NSLeftMouseDragged events.
In qnsview.mm, the handleFrameStrutMouseEvent routine has a switch statement that handles NSLeftMouseDown and NSLeftMouseUp but ignores NSLeftMouseDragged, so it creates a FrameStrutMouse event with no buttons pressed (even though the Dragged event indicates that I am still holding a button!)
QGuiApplicationPrivate::processMouseEvent then processes this event and interprets it as QEvent::NonClientAreaMouseButtonRelease storing the wrong information about the non-pressed buttons and causing a subsequent mouse move (with buttons still pressed) to simulate a double-click.
Attachments
Issue Links
- replaces
-
QTBUG-42043 OS X: Broken mouse move delivery over non-client area
- Closed