Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
5.15.13
-
-
f7a2d5233 (dev), ae380d343 (dev), 10c3dd87d (dev), 98d1534df (6.7), 1353b9cf3 (6.7), e0ee9cfe3 (6.7), 12cc65053 (tqtc/lts-6.5), 87b6157b9 (tqtc/lts-6.5), 74f06bc0d (dev), 04b8b61ce (dev), 8e3344778 (6.8), 0dfa96aac (6.7), 84673a284 (tqtc/lts-6.5)
Description
When a client application with two or more top level widgets is run in a Wayland compositor the gesture events are not delivered to the correct top level widget.
QGestureManager::deliverEvents() uses the gesture's hotspot to find the top-level widget. It looks like the Wayland windows contain the same coordinates, so it is picking what it thinks is the top-level widget. If the QGestureManager::deliverEvents() is forced to use the gesture's context from m_gestureOwners, instead of the hotspot, the gesture is sent to the correct window.
To reproduce, please run the attached example which consists of the compositor and the client. Use mouse and touch screen to click the both top level widgets.
The QApplication::topLevelAt() with the global mouse event position for mousePressEvent() logging always shows "topLevelAtWidget=Right" even when clicking on the "Left" widget. When tapped with a touch screen the tap gesture is always showing "objectName=Right".
Attachments
Issue Links
- relates to
-
QTBUG-121015 tst_QGuiApplication::topLevelAt() failed on Wayland
- Closed
- resulted in
-
QTBUG-125878 Cannot pinch-to-zoom after the qt 6.7.1 upgrade [regression]
- Closed
-
QTBUG-126313 QScroller gesture blocks mouse clicks
- Closed
-
QTBUG-126703 QApplication::widgetAt() always returns nullptr
- Closed
Gerrit Reviews
For Gerrit Dashboard: QTBUG-113404 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
556775,1 | client: Synthesize enter/leave event for popup in xdg-shell - 2 | tqtc/lts-6.2 | qt/tqtc-qtwayland | Status: NEW | +2 | 0 |