-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
B - bugDang, that shouldn't have happenedDang, that shouldn't have happenedDS - win32Affects the Win32/Windows backendAffects the Win32/Windows backend
Description
After closing the last window created no device events are received. The events come back after opening a new window.
This can be reproduced with this modified multiwindow example:
use std::collections::HashMap;
use winit::{
event::{ElementState, Event, KeyboardInput, WindowEvent},
event_loop::{ControlFlow, EventLoop},
window::Window,
};
fn main() {
let event_loop = EventLoop::new();
let mut windows = HashMap::new();
for i in 1..=3 {
let window = Window::new(&event_loop).unwrap();
window.set_title(&format!("Window {}", i));
windows.insert(window.id(), window);
}
event_loop.run(move |event, event_loop, control_flow| {
*control_flow = ControlFlow::Wait;
println!("{:?}", event);
match event {
Event::WindowEvent { event, window_id } => {
match event {
WindowEvent::CloseRequested => {
println!("Window {:?} has received the signal to close", window_id);
// This drops the window, causing it to close.
windows.remove(&window_id);
if windows.is_empty() {
*control_flow = ControlFlow::Exit;
}
}
WindowEvent::KeyboardInput {
input:
KeyboardInput {
state: ElementState::Pressed,
..
},
..
} => {
let window = Window::new(&event_loop).unwrap();
windows.insert(window.id(), window);
}
_ => (),
}
}
_ => (),
}
})
}Run it and close 'Window 3', the callback no longer prints device events.
Metadata
Metadata
Assignees
Labels
B - bugDang, that shouldn't have happenedDang, that shouldn't have happenedDS - win32Affects the Win32/Windows backendAffects the Win32/Windows backend