Skip to content

gdk/wayland: Fix button mask calculation on button events

There's 2 things broken here:

  • The mask was calculated on top of the GDK button (i.e. skipping 4-7 buttons), so GDK_BUTTON4_MASK and GDK_BUTTON5_MASK were not assigned. This is now calculated on the (continuous) BTN_ evcodes so it is guaranteed that the next 2 physical buttons (i.e. back/forward) get these two places in the mask assigned.
  • Furthermore, these buttons would be pushed to places in the modifier mask that they didn't belong to. It is now checked hard that only the first 5 buttons enable a modifier flag.

Overall, this ensures that no event masks with bonkers values are forwarded, and that no stale implicit grabs are left after additional buttons are pressed.

Closes: #5301 (closed)

Merge request reports