tree: clean up object attachment
This commit is contained in:
parent
ed129c1c3d
commit
fe804b8276
8 changed files with 140 additions and 115 deletions
|
|
@ -36,9 +36,8 @@ pub trait ToplevelNode: ToplevelNodeBase {
|
|||
fn tl_set_fullscreen(self: Rc<Self>, fullscreen: bool);
|
||||
fn tl_title_changed(&self);
|
||||
fn tl_set_parent(&self, parent: Rc<dyn ContainingNode>);
|
||||
fn tl_active_changed(&self);
|
||||
fn tl_extents_changed(&self);
|
||||
fn tl_set_workspace(self: Rc<Self>, ws: &Rc<WorkspaceNode>);
|
||||
fn tl_set_workspace(&self, ws: &Rc<WorkspaceNode>);
|
||||
fn tl_change_extents(self: Rc<Self>, rect: &Rect);
|
||||
fn tl_set_visible(&self, visible: bool);
|
||||
fn tl_destroy(&self);
|
||||
|
|
@ -103,36 +102,19 @@ impl<T: ToplevelNodeBase> ToplevelNode for T {
|
|||
let data = self.tl_data();
|
||||
data.parent.set(Some(parent.clone()));
|
||||
data.is_floating.set(parent.node_is_float());
|
||||
self.tl_extents_changed();
|
||||
self.tl_title_changed();
|
||||
self.tl_active_changed();
|
||||
}
|
||||
|
||||
fn tl_active_changed(&self) {
|
||||
let data = self.tl_data();
|
||||
let parent = match data.parent.get() {
|
||||
Some(p) => p,
|
||||
_ => return,
|
||||
};
|
||||
let node = self.tl_as_node();
|
||||
if data.active.get() || data.active_surfaces.active() {
|
||||
parent.clone().node_child_active_changed(node, true, 1);
|
||||
}
|
||||
self.tl_set_workspace(&parent.cnode_workspace());
|
||||
}
|
||||
|
||||
fn tl_extents_changed(&self) {
|
||||
let data = self.tl_data();
|
||||
let parent = match data.parent.get() {
|
||||
Some(p) => p,
|
||||
_ => return,
|
||||
};
|
||||
let node = self.tl_as_node();
|
||||
let pos = data.pos.get();
|
||||
parent.node_child_size_changed(node, pos.width(), pos.height());
|
||||
data.state.tree_changed();
|
||||
if let Some(parent) = data.parent.get() {
|
||||
let pos = data.pos.get();
|
||||
parent.node_child_size_changed(self, pos.width(), pos.height());
|
||||
data.state.tree_changed();
|
||||
}
|
||||
}
|
||||
|
||||
fn tl_set_workspace(self: Rc<Self>, ws: &Rc<WorkspaceNode>) {
|
||||
fn tl_set_workspace(&self, ws: &Rc<WorkspaceNode>) {
|
||||
let data = self.tl_data();
|
||||
data.workspace.set(Some(ws.clone()));
|
||||
self.tl_set_workspace_ext(ws);
|
||||
|
|
@ -184,7 +166,7 @@ pub trait ToplevelNodeBase: Node {
|
|||
.or_else(|| self.tl_default_focus_child())
|
||||
}
|
||||
|
||||
fn tl_set_workspace_ext(self: Rc<Self>, ws: &Rc<WorkspaceNode>) {
|
||||
fn tl_set_workspace_ext(&self, ws: &Rc<WorkspaceNode>) {
|
||||
let _ = ws;
|
||||
}
|
||||
|
||||
|
|
@ -259,6 +241,10 @@ impl ToplevelData {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn active(&self) -> bool {
|
||||
self.active_surfaces.active() || self.active.get()
|
||||
}
|
||||
|
||||
pub fn float_size(&self, ws: &WorkspaceNode) -> (i32, i32) {
|
||||
let output = ws.output.get().global.pos.get();
|
||||
let mut width = self.float_width.get();
|
||||
|
|
@ -401,7 +387,6 @@ impl ToplevelData {
|
|||
self.is_fullscreen.set(true);
|
||||
node.tl_set_parent(ws.clone());
|
||||
ws.set_fullscreen_node(&node);
|
||||
node.clone().tl_set_workspace(ws);
|
||||
node.clone()
|
||||
.tl_change_extents(&ws.output.get().global.pos.get());
|
||||
for seat in kb_foci {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue