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 removing per-workspace trees and instead
showing/hiding views individually based on view->workspace.
This commit is contained in:
tokyo4j 2025-12-01 14:56:04 +09:00
parent 55a256f2fa
commit cf401a6394
8 changed files with 25 additions and 72 deletions

View file

@ -62,10 +62,7 @@ enum lab_view_criteria {
/* No filter -> all focusable views */
LAB_VIEW_CRITERIA_NONE = 0,
/*
* Includes always-on-top views, e.g.
* what is visible on the current workspace
*/
/* Includes omnipresent (visible on all desktops) views */
LAB_VIEW_CRITERIA_CURRENT_WORKSPACE = 1 << 0,
/* Positive criteria */

View file

@ -8,14 +8,12 @@
struct seat;
struct server;
struct wlr_scene_tree;
struct workspace {
struct wl_list link; /* struct server.workspaces */
struct server *server;
char *name;
struct wlr_scene_tree *tree;
struct lab_cosmic_workspace *cosmic_workspace;
struct {