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:
parent
ef84ce76e3
commit
3722275cfa
1 changed files with 13 additions and 8 deletions
|
@ -524,15 +524,20 @@ impl X11Client {
|
||||||
0,
|
0,
|
||||||
event.locked_group.into(),
|
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)?;
|
let modifiers = Modifiers::from_xkb(&state.xkb);
|
||||||
focused_window.handle_input(PlatformInput::ModifiersChanged(
|
if state.modifiers == modifiers {
|
||||||
ModifiersChangedEvent { 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) => {
|
Event::KeyPress(event) => {
|
||||||
let window = self.get_window(event.event)?;
|
let window = self.get_window(event.event)?;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue