diff --git a/.changes/linux-current-monitor.md b/.changes/linux-current-monitor.md new file mode 100644 index 000000000..db67e62b5 --- /dev/null +++ b/.changes/linux-current-monitor.md @@ -0,0 +1,5 @@ +--- +"tao": patch +--- + +Fix `Window::current_monitor` sometimes panicking on Linux when the window is invisible. diff --git a/src/platform_impl/linux/window.rs b/src/platform_impl/linux/window.rs index c97a077d5..0f6c6009a 100644 --- a/src/platform_impl/linux/window.rs +++ b/src/platform_impl/linux/window.rs @@ -678,11 +678,12 @@ impl Window { let monitor = self .window .window() - .map(|window| display.monitor_at_window(&window)) - .unwrap_or_else(|| display.primary_monitor()) - .unwrap(); - let handle = MonitorHandle { monitor }; - Some(RootMonitorHandle { inner: handle }) + .and_then(|window| display.monitor_at_window(&window)) + .or_else(|| display.primary_monitor()); + + monitor.map(|monitor| RootMonitorHandle { + inner: MonitorHandle { monitor }, + }) } #[inline]