From ea429a778e7b2de6e73342dc66b0d6626bb963d1 Mon Sep 17 00:00:00 2001 From: Nikola Hristov Date: Mon, 8 Dec 2025 19:37:07 +0200 Subject: [PATCH] fix: Toplevel disappearing after unmap --- src/wayland/protocols/toplevel_info.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/wayland/protocols/toplevel_info.rs b/src/wayland/protocols/toplevel_info.rs index af792b7a..a64f8e9e 100644 --- a/src/wayland/protocols/toplevel_info.rs +++ b/src/wayland/protocols/toplevel_info.rs @@ -335,9 +335,16 @@ where let toplevel_handle = self .foreign_toplevel_list .new_toplevel::(toplevel.title(), toplevel.app_id()); - toplevel - .user_data() - .insert_if_missing(move || ToplevelStateInner::from_foreign(toplevel_handle)); + + if let Some(toplevel_state) = toplevel.user_data().get::() { + let mut toplevel_state = toplevel_state.lock().unwrap(); + toplevel_state.foreign_handle = Some(toplevel_handle); + } else { + toplevel + .user_data() + .insert_if_missing(move || ToplevelStateInner::from_foreign(toplevel_handle)); + } + for instance in &self.instances { send_toplevel_to_client::(&self.dh, workspace_state, instance, toplevel); }