feat: support multiple fullscreen windows per workspace

This commit is contained in:
Hojjat Abdollahi 2026-06-02 09:48:33 -06:00 committed by GitHub
parent 9f28a764a7
commit 28ef6bdbc8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 381 additions and 308 deletions

View file

@ -575,16 +575,15 @@ impl Common {
.filter(|(i, _)| *i != set.active),
)
.flat_map(|(_, workspace)| {
let focus_last =
workspace.focus_stack.get(seat).last().cloned();
workspace
.get_fullscreen()
.get_fullscreen_surfaces()
.filter(|f| {
workspace
.focus_stack
.get(seat)
.last()
.is_some_and(|t| &t == f)
focus_last.as_ref().is_some_and(|t| t == &f.surface)
})
.cloned()
.map(|f| f.surface.clone())
.collect::<Vec<_>>()
.into_iter()
.chain(workspace.mapped().flat_map(|mapped| {
let active = mapped.active_window();
@ -603,15 +602,14 @@ impl Common {
}))
.chain(
workspace
.get_fullscreen()
.get_fullscreen_surfaces()
.filter(|f| {
workspace
.focus_stack
.get(seat)
.last()
.is_none_or(|t| &t != f)
focus_last
.as_ref()
.is_none_or(|t| t != &f.surface)
})
.cloned()
.map(|f| f.surface.clone())
.collect::<Vec<_>>()
.into_iter(),
)
.chain(