autocommit 2022-04-29 17:57:11 CEST
This commit is contained in:
parent
9a0bfb3a72
commit
4e717ecef8
6 changed files with 39 additions and 14 deletions
|
|
@ -96,7 +96,7 @@ impl FloatNode {
|
|||
let floater = Rc::new(FloatNode {
|
||||
id: state.node_ids.next(),
|
||||
state: state.clone(),
|
||||
visible: Cell::new(true),
|
||||
visible: Cell::new(ws.stacked_visible()),
|
||||
position: Cell::new(position),
|
||||
display_link: Cell::new(None),
|
||||
workspace_link: Cell::new(None),
|
||||
|
|
@ -118,6 +118,7 @@ impl FloatNode {
|
|||
.set(Some(ws.stacked.add_last(floater.clone())));
|
||||
child.clone().tl_set_workspace(ws);
|
||||
child.tl_set_parent(floater.clone());
|
||||
child.tl_set_visible(floater.visible.get());
|
||||
floater.schedule_layout();
|
||||
floater
|
||||
}
|
||||
|
|
@ -321,14 +322,7 @@ impl FloatNode {
|
|||
self.workspace_link
|
||||
.set(Some(ws.stacked.add_last(self.clone())));
|
||||
self.workspace.set(ws.clone());
|
||||
}
|
||||
|
||||
pub fn set_visible(&self, visible: bool) {
|
||||
self.visible.set(visible);
|
||||
if let Some(child) = self.child.get() {
|
||||
child.tl_set_visible(visible);
|
||||
}
|
||||
self.seat_state.set_visible(self, visible);
|
||||
self.stacked_set_visible(ws.stacked_visible());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -520,4 +514,12 @@ impl ContainingNode for FloatNode {
|
|||
|
||||
impl StackedNode for FloatNode {
|
||||
stacked_node_impl!();
|
||||
|
||||
fn stacked_set_visible(&self, visible: bool) {
|
||||
self.visible.set(visible);
|
||||
if let Some(child) = self.child.get() {
|
||||
child.tl_set_visible(visible);
|
||||
}
|
||||
self.seat_state.set_visible(self, visible);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ pub trait StackedNode: Node {
|
|||
fn stacked_as_node(&self) -> &dyn Node;
|
||||
fn stacked_into_node(self: Rc<Self>) -> Rc<dyn Node>;
|
||||
fn stacked_into_dyn(self: Rc<Self>) -> Rc<dyn StackedNode>;
|
||||
fn stacked_set_visible(&self, visible: bool);
|
||||
|
||||
fn stacked_absolute_position_constrains_input(&self) -> bool {
|
||||
true
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ use {
|
|||
rc::Rc,
|
||||
},
|
||||
};
|
||||
use crate::ifs::wl_seat::collect_kb_foci2;
|
||||
|
||||
tree_id!(ToplevelNodeId);
|
||||
|
||||
|
|
@ -265,6 +266,10 @@ impl ToplevelData {
|
|||
kb_foci = collect_kb_foci(container.clone());
|
||||
container.tl_set_visible(false);
|
||||
}
|
||||
for stacked in ws.stacked.iter() {
|
||||
collect_kb_foci2(stacked.deref().clone().stacked_into_node(), &mut kb_foci);
|
||||
stacked.stacked_set_visible(false);
|
||||
}
|
||||
*data = Some(FullscreenedData {
|
||||
placeholder,
|
||||
workspace: ws.clone(),
|
||||
|
|
@ -308,8 +313,8 @@ impl ToplevelData {
|
|||
_ => {}
|
||||
}
|
||||
fd.workspace.fullscreen.take();
|
||||
if let Some(container) = fd.workspace.container.get() {
|
||||
container.tl_set_visible(node.tl_as_node().node_visible());
|
||||
if node.node_visible() {
|
||||
fd.workspace.set_visible(true);
|
||||
}
|
||||
if fd.placeholder.is_destroyed() {
|
||||
state.map_tiled(node);
|
||||
|
|
|
|||
|
|
@ -38,10 +38,14 @@ impl WorkspaceNode {
|
|||
container.clone().tl_change_extents(&pos);
|
||||
container.clone().tl_set_workspace(self);
|
||||
container.tl_set_parent(self.clone());
|
||||
container.tl_set_visible(self.visible.get() && self.fullscreen.get().is_none());
|
||||
container.tl_set_visible(self.stacked_visible());
|
||||
self.container.set(Some(container.clone()));
|
||||
}
|
||||
|
||||
pub fn stacked_visible(&self) -> bool {
|
||||
self.visible.get() && self.fullscreen.get().is_none()
|
||||
}
|
||||
|
||||
pub fn change_extents(&self, rect: &Rect) {
|
||||
self.position.set(*rect);
|
||||
if let Some(c) = self.container.get() {
|
||||
|
|
@ -53,8 +57,13 @@ impl WorkspaceNode {
|
|||
self.visible.set(visible);
|
||||
if let Some(fs) = self.fullscreen.get() {
|
||||
fs.tl_set_visible(visible);
|
||||
} else if let Some(container) = self.container.get() {
|
||||
container.tl_set_visible(visible);
|
||||
} else {
|
||||
if let Some(container) = self.container.get() {
|
||||
container.tl_set_visible(visible);
|
||||
}
|
||||
for stacked in self.stacked.iter() {
|
||||
stacked.stacked_set_visible(visible);
|
||||
}
|
||||
}
|
||||
self.seat_state.set_visible(self, visible);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue