feat: add alternating autotiling
This commit is contained in:
parent
ce14169d6b
commit
5c2f631fdb
17 changed files with 244 additions and 59 deletions
34
src/state.rs
34
src/state.rs
|
|
@ -925,19 +925,39 @@ impl State {
|
|||
&& node.tl_data().kind.is_app_window()
|
||||
&& !node.tl_data().visible.get();
|
||||
if animate_new_app_map {
|
||||
self.with_layout_animations(|| self.do_map_tiled(seat.as_deref(), node.clone()));
|
||||
self.with_layout_animations(|| self.do_map_tiled(seat.as_deref(), node.clone(), true));
|
||||
} else {
|
||||
self.do_map_tiled(seat.as_deref(), node.clone());
|
||||
self.do_map_tiled(seat.as_deref(), node.clone(), true);
|
||||
}
|
||||
self.focus_after_map(node, seat.as_deref());
|
||||
}
|
||||
|
||||
fn do_map_tiled(self: &Rc<Self>, seat: Option<&Rc<WlSeatGlobal>>, node: Rc<dyn ToplevelNode>) {
|
||||
pub fn map_tiled_without_autotile(self: &Rc<Self>, node: Rc<dyn ToplevelNode>) {
|
||||
let seat = self.seat_queue.last();
|
||||
self.do_map_tiled(seat.as_deref(), node.clone(), false);
|
||||
self.focus_after_map(node, seat.as_deref());
|
||||
}
|
||||
|
||||
fn do_map_tiled(
|
||||
self: &Rc<Self>,
|
||||
seat: Option<&Rc<WlSeatGlobal>>,
|
||||
node: Rc<dyn ToplevelNode>,
|
||||
autotile: bool,
|
||||
) {
|
||||
let ws = self.ensure_map_workspace(seat);
|
||||
self.map_tiled_on(node, &ws);
|
||||
self.map_tiled_on_(node, &ws, autotile);
|
||||
}
|
||||
|
||||
pub fn map_tiled_on(self: &Rc<Self>, node: Rc<dyn ToplevelNode>, ws: &Rc<WorkspaceNode>) {
|
||||
self.map_tiled_on_(node, ws, false);
|
||||
}
|
||||
|
||||
fn map_tiled_on_(
|
||||
self: &Rc<Self>,
|
||||
node: Rc<dyn ToplevelNode>,
|
||||
ws: &Rc<WorkspaceNode>,
|
||||
autotile: bool,
|
||||
) {
|
||||
if let Some(c) = ws.container.get() {
|
||||
let la = c.clone().tl_last_active_child();
|
||||
let lap = la
|
||||
|
|
@ -946,7 +966,11 @@ impl State {
|
|||
.get()
|
||||
.and_then(|n| n.node_into_container());
|
||||
if let Some(lap) = lap {
|
||||
lap.add_child_after(&*la, node);
|
||||
if autotile {
|
||||
lap.add_tiled_child_after(&*la, node);
|
||||
} else {
|
||||
lap.add_child_after(&*la, node);
|
||||
}
|
||||
} else {
|
||||
c.append_child(node);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue