Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-113404

Wayland: Gestures are not delivered to correct top level widget

XMLWordPrintable

    • Linux/Wayland
    • 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)

      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".

        1. qtbug_113404.zip
          5 kB
          Tuomas Vaarala
        For Gerrit Dashboard: QTBUG-113404
        # Subject Branch Project Status CR V

            liaqi Liang Qi
            tuomas.vaarala Tuomas Vaarala
            Votes:
            1 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:

                There is 1 open Gerrit change