diff --git a/src/window/mod.rs b/src/window/mod.rs index bf0553f..96b0e8f 100644 --- a/src/window/mod.rs +++ b/src/window/mod.rs @@ -350,27 +350,32 @@ pub fn create_window() { let window = windowed_context.window(); // Check that window is visible in some monitor, and reposition it if not. - if let Some(current_monitor) = window.current_monitor() { - let monitor_position = current_monitor.position(); - let monitor_size = current_monitor.size(); - let monitor_width = monitor_size.width as i32; - let monitor_height = monitor_size.height as i32; - - let window_position = window - .outer_position() - .expect("Could not get window position"); - let window_size = window.outer_size(); - let window_width = window_size.width as i32; - let window_height = window_size.height as i32; - - if window_position.x + window_width < monitor_position.x - || window_position.y + window_height < monitor_position.y - || window_position.x > monitor_position.x + monitor_width - || window_position.y > monitor_position.y + monitor_height - { - window.set_outer_position(monitor_position); - } - } + let did_reposition = window + .current_monitor() + .and_then(|current_monitor| { + let monitor_position = current_monitor.position(); + let monitor_size = current_monitor.size(); + let monitor_width = monitor_size.width as i32; + let monitor_height = monitor_size.height as i32; + + let window_position = window.outer_position().ok()?; + let window_size = window.outer_size(); + let window_width = window_size.width as i32; + let window_height = window_size.height as i32; + + if window_position.x + window_width < monitor_position.x + || window_position.y + window_height < monitor_position.y + || window_position.x > monitor_position.x + monitor_width + || window_position.y > monitor_position.y + monitor_height + { + window.set_outer_position(monitor_position); + } + + Some(()) + }) + .is_some(); + + log::trace!("repositioned window: {}", did_reposition); let scale_factor = windowed_context.window().scale_factor(); let renderer = Renderer::new(scale_factor);