Skip to content
  • Daniel Boles's avatar
    gdkseatdefault: Grab touch events where applicable · 5c700cf5
    Daniel Boles authored
    gdk_seat_default_grab() grabs POINTER_EVENTS if the capability is
    GDK_SEAT_CAPABILITY_ALL_POINTING. But that enumerator is a union that
    includes GDK_SEAT_CAPABILITY_TOUCH, but we never grabbed TOUCH_EVENTS,
    an unused macro that was presumably created with this purpose in mind.
    
    So, check which of the ALL_POINTING capabilities we have, and set the
    right mask of POINTER_EVENTS and/or TOUCH_EVENTS as required.
    
    As part of this, explicitly let TABLET_STYLUS take over pointer events,
    as this is the intended behaviour and was the effective result before.
    
    This should fix touch events being lost in migrating from Device.grab()
    to Seat.grab(GDK_SEAT_CAPABILITY_ALL_POINTING), as found by Inkscape.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=781757
    5c700cf5