1
0
Fork 0
forked from wry/wry

tree: allow showing floating windows above fullscreen

This commit is contained in:
Julian Orth 2025-04-22 17:46:25 +02:00
parent f3179b7794
commit 0c02cb5033
17 changed files with 118 additions and 6 deletions

View file

@ -115,7 +115,7 @@ impl FloatNode {
let floater = Rc::new(FloatNode {
id: state.node_ids.next(),
state: state.clone(),
visible: Cell::new(ws.container_visible()),
visible: Cell::new(ws.float_visible()),
position: Cell::new(position),
display_link: RefCell::new(None),
workspace_link: Cell::new(None),
@ -408,7 +408,7 @@ impl FloatNode {
self.workspace_link
.set(Some(ws.stacked.add_last(self.clone())));
self.workspace.set(ws.clone());
self.stacked_set_visible(ws.container_visible());
self.stacked_set_visible(ws.float_visible());
}
fn update_child_title(self: &Rc<Self>, title: &str) {

View file

@ -165,6 +165,10 @@ impl WorkspaceNode {
self.visible.get() && self.fullscreen.is_none()
}
pub fn float_visible(&self) -> bool {
self.visible.get() && (self.fullscreen.is_none() || self.state.float_above_fullscreen.get())
}
pub fn change_extents(&self, rect: &Rect) {
self.position.set(*rect);
if let Some(c) = self.container.get() {
@ -197,7 +201,7 @@ impl WorkspaceNode {
}
for stacked in self.stacked.iter() {
if stacked.stacked_needs_set_visible() {
stacked.stacked_set_visible(self.container_visible());
stacked.stacked_set_visible(self.float_visible());
}
}
self.seat_state.set_visible(self, visible);