diff --git a/src/window/mod.rs b/src/window/mod.rs index 24dbcb5..094fb35 100644 --- a/src/window/mod.rs +++ b/src/window/mod.rs @@ -332,6 +332,28 @@ 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 scale_factor = windowed_context.window().scale_factor(); let renderer = Renderer::new(scale_factor); let saved_inner_size = window.inner_size();