linux/x11: Only create ModifiersChanged event if they changed (#12879)

I noticed that when I use my mouse wheel, we get a ton of the
`XkbStateNotify` events, but the modifiers don't change, so we add a ton
of useless input events for the window.

Release Notes:

- N/A
This commit is contained in:
Thorsten Ball 2024-06-11 11:00:26 +02:00 committed by GitHub
parent ef84ce76e3
commit 3722275cfa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -524,15 +524,20 @@ impl X11Client {
0,
event.locked_group.into(),
);
let modifiers = Modifiers::from_xkb(&state.xkb);
let focused_window_id = state.focused_window?;
state.modifiers = modifiers;
drop(state);
let focused_window = self.get_window(focused_window_id)?;
focused_window.handle_input(PlatformInput::ModifiersChanged(
ModifiersChangedEvent { modifiers },
));
let modifiers = Modifiers::from_xkb(&state.xkb);
if state.modifiers == modifiers {
drop(state);
} else {
let focused_window_id = state.focused_window?;
state.modifiers = modifiers;
drop(state);
let focused_window = self.get_window(focused_window_id)?;
focused_window.handle_input(PlatformInput::ModifiersChanged(
ModifiersChangedEvent { modifiers },
));
}
}
Event::KeyPress(event) => {
let window = self.get_window(event.event)?;