view: decouple always-on-top windows from the omnipresent state

Before this commit, always-on-{top,bottom} windows were always visible
on all workspaces (omnipresent) because the they were not in
per-workspace trees like normal windows.

This commit fixes this by introducing per-layer trees in
`struct workspace`.

I also added `enum view_layer` and `view->layer` for simplicity.
This commit is contained in:
tokyo4j 2026-02-03 19:18:53 +09:00 committed by Hiroaki Yamamoto
parent 155c153658
commit a2eae22fc2
11 changed files with 85 additions and 96 deletions

View file

@ -96,9 +96,9 @@ desktop_focus_view(struct view *view, bool raise)
/*
* Switch workspace if necessary to make the view visible
* (unnecessary for "always on {top,bottom}" views).
* (unnecessary for omnipresent views).
*/
if (!view_is_always_on_top(view) && !view_is_always_on_bottom(view)) {
if (!view->visible_on_all_workspaces) {
workspaces_switch_to(view->workspace, /*update_focus*/ false);
}