diff --git a/core/src/keyboard/event.rs b/core/src/keyboard/event.rs index bc8437a8..d142c3bc 100644 --- a/core/src/keyboard/event.rs +++ b/core/src/keyboard/event.rs @@ -28,4 +28,7 @@ pub enum Event { /// A unicode character was received. CharacterReceived(char), + + /// The keyboard modifiers have changed. + ModifiersChanged(ModifiersState), } diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 2d21a968..f89c3588 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -539,10 +539,8 @@ where } } } - - *self.pressed_modifiers = modifiers; } - keyboard::Event::KeyReleased { modifiers, .. } => { + keyboard::Event::ModifiersChanged(modifiers) => { *self.pressed_modifiers = modifiers; } _ => {} diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index 80727bd8..cfa76e88 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -92,6 +92,9 @@ pub fn window_event( } } })), + WindowEvent::ModifiersChanged(new_modifiers) => Some(Event::Keyboard( + keyboard::Event::ModifiersChanged(modifiers_state(*new_modifiers)), + )), WindowEvent::HoveredFile(path) => { Some(Event::Window(window::Event::FileHovered(path.clone()))) }