Send modifiers first

This commit is contained in:
dAxpeDDa 2023-06-13 14:13:01 +02:00 committed by daxpedda
parent a7a8ff0bbb
commit e17977d7c7

View file

@ -134,7 +134,7 @@ impl<T> EventLoopWindowTarget<T> {
let modifiers = self.modifiers.clone(); let modifiers = self.modifiers.clone();
canvas.on_keyboard_press( canvas.on_keyboard_press(
move |physical_key, logical_key, text, location, repeat, active_modifiers| { move |physical_key, logical_key, text, location, repeat, active_modifiers| {
let modifiers_changed = (modifiers.get() != active_modifiers).then(|| { let modifiers = (modifiers.get() != active_modifiers).then(|| {
modifiers.set(active_modifiers); modifiers.set(active_modifiers);
Event::WindowEvent { Event::WindowEvent {
window_id: RootWindowId(id), window_id: RootWindowId(id),
@ -142,8 +142,7 @@ impl<T> EventLoopWindowTarget<T> {
} }
}); });
runner.send_events( runner.send_events(modifiers.into_iter().chain(iter::once(Event::WindowEvent {
iter::once(Event::WindowEvent {
window_id: RootWindowId(id), window_id: RootWindowId(id),
event: WindowEvent::KeyboardInput { event: WindowEvent::KeyboardInput {
device_id: RootDeviceId(unsafe { DeviceId::dummy() }), device_id: RootDeviceId(unsafe { DeviceId::dummy() }),
@ -158,9 +157,7 @@ impl<T> EventLoopWindowTarget<T> {
}, },
is_synthetic: false, is_synthetic: false,
}, },
}) })));
.chain(modifiers_changed),
);
}, },
prevent_default, prevent_default,
); );
@ -169,7 +166,7 @@ impl<T> EventLoopWindowTarget<T> {
let modifiers = self.modifiers.clone(); let modifiers = self.modifiers.clone();
canvas.on_keyboard_release( canvas.on_keyboard_release(
move |physical_key, logical_key, text, location, repeat, active_modifiers| { move |physical_key, logical_key, text, location, repeat, active_modifiers| {
let modifiers_changed = (modifiers.get() != active_modifiers).then(|| { let modifiers = (modifiers.get() != active_modifiers).then(|| {
modifiers.set(active_modifiers); modifiers.set(active_modifiers);
Event::WindowEvent { Event::WindowEvent {
window_id: RootWindowId(id), window_id: RootWindowId(id),
@ -177,8 +174,7 @@ impl<T> EventLoopWindowTarget<T> {
} }
}); });
runner.send_events( runner.send_events(modifiers.into_iter().chain(iter::once(Event::WindowEvent {
iter::once(Event::WindowEvent {
window_id: RootWindowId(id), window_id: RootWindowId(id),
event: WindowEvent::KeyboardInput { event: WindowEvent::KeyboardInput {
device_id: RootDeviceId(unsafe { DeviceId::dummy() }), device_id: RootDeviceId(unsafe { DeviceId::dummy() }),
@ -193,9 +189,7 @@ impl<T> EventLoopWindowTarget<T> {
}, },
is_synthetic: false, is_synthetic: false,
}, },
}) })))
.chain(modifiers_changed),
)
}, },
prevent_default, prevent_default,
); );