aboutsummaryrefslogtreecommitdiff
path: root/src/handlers
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-12-13 10:28:25 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-12-30 20:12:37 +0300
commitaac54d0ea1a5c95aba698aed583ee3fa9670f18b (patch)
tree9fc958b60bd2808afd82a4e58fd3cce40df1ff5d /src/handlers
parent4fe718581b4369ea8fae041c8896cf5b4ab45cb5 (diff)
downloadniri-aac54d0ea1a5c95aba698aed583ee3fa9670f18b.tar.gz
niri-aac54d0ea1a5c95aba698aed583ee3fa9670f18b.tar.bz2
niri-aac54d0ea1a5c95aba698aed583ee3fa9670f18b.zip
Implement floating child stacking above parents
Diffstat (limited to 'src/handlers')
-rw-r--r--src/handlers/xdg_shell.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/handlers/xdg_shell.rs b/src/handlers/xdg_shell.rs
index 869492a2..5cb515ce 100644
--- a/src/handlers/xdg_shell.rs
+++ b/src/handlers/xdg_shell.rs
@@ -647,6 +647,22 @@ impl XdgShellHandler for State {
fn title_changed(&mut self, toplevel: ToplevelSurface) {
self.update_window_rules(&toplevel);
}
+
+ fn parent_changed(&mut self, toplevel: ToplevelSurface) {
+ let Some(parent) = toplevel.parent() else {
+ return;
+ };
+
+ if let Some((mapped, output)) = self.niri.layout.find_window_and_output_mut(&parent) {
+ let output = output.cloned();
+ let window = mapped.window.clone();
+ if self.niri.layout.descendants_added(&window) {
+ if let Some(output) = output {
+ self.niri.queue_redraw(&output);
+ }
+ }
+ }
+ }
}
delegate_xdg_shell!(State);