HomeFreeBSD

x11/libxfce4menu: Fix leaked keygrabs when layout changes

Description

x11/libxfce4menu: Fix leaked keygrabs when layout changes

As diagnosed by Jethro Nederhof, xfce-shortcuts-grabber.c attempts to update
grabbed key shortcuts when xkeyboard layout changes. Unfortunately, it had no
memory of which keycodes it has actually grabbed. Instead, it attempted to
ungrab the *new* keycode, which obviously doesn't actually ungrab those codes.

This went unnoticed for some time, probably because nothing collided with
important keys. Recently, a default PrintScreen shortcut was added to Xfce,
which for whatever reason seems to collide with Up in initial layout. When the
kbd layout changes, the shortcut ungrabs the *new* Printscreen keycode and then
re-grabs the same keycode, leaving the Up keycode grabbed.

Fix this by giving xfce-shortcuts-grabber some memory of which keycodes it has
grabbed. When it grabs a key, it remembers the keycode it grabbed in the
XfceKey object. When it ungrabs a key, it ungrabs the keycodes in the XfceKey
object, rather than those for the new keyboard layout.

PR: 244290
Reported by: Aryeh Friedman <aryeh.friedman AT gmail.com>, many others
Approved by: madpilot
Differential Revision: https://reviews.freebsd.org/D24338

Details

Provenance
cemAuthored on
Differential Revision
D24338: x11/libxfce4menu: Fix leaked keygrabs when layout changes
Parents
rP531553: New port: textproc/trdsql
Branches
Unknown
Tags
Unknown