srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/wayland/src/winit
diff options
context:
space:
mode:
Diffstat (limited to 'crates/wayland/src/winit')
-rw-r--r--crates/wayland/src/winit/platform.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/crates/wayland/src/winit/platform.rs b/crates/wayland/src/winit/platform.rs
index e5b0b89..23387b7 100644
--- a/crates/wayland/src/winit/platform.rs
+++ b/crates/wayland/src/winit/platform.rs
@@ -105,8 +105,14 @@ impl Platform for WaylandPlatform {
}
fn close(&mut self, window: WindowId) -> PlatformResult<()> {
- if let Some(w) = self.state.id_to_window.get(&window).and_then(|w| w.toplevel()) {
- w.send_close();
+ let Some(w) = self.state.id_to_window.get(&window) else { return Ok(()) };
+ if let Some(toplevel) = w.toplevel() {
+ toplevel.send_close();
+ } else if let Some(x11) = w.x11_surface() {
+ // Same fix as `udev/platform.rs`'s matching function: `w.toplevel()`
+ // is `None` for an XWayland window, so closing one silently did
+ // nothing at all without this arm.
+ let _ = x11.close();
}
Ok(())
}