diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-12-13 10:28:25 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-12-30 20:12:37 +0300 |
| commit | aac54d0ea1a5c95aba698aed583ee3fa9670f18b (patch) | |
| tree | 9fc958b60bd2808afd82a4e58fd3cce40df1ff5d /src/handlers | |
| parent | 4fe718581b4369ea8fae041c8896cf5b4ab45cb5 (diff) | |
| download | niri-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.rs | 16 |
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); |
