shell: xdg-popup positioning logic

This commit is contained in:
Victoria Brekenfeld 2022-07-05 18:46:38 +02:00
parent c3c0a25a80
commit be136306cc
6 changed files with 434 additions and 13 deletions

View file

@ -195,6 +195,8 @@ impl TilingLayout {
}
}
}
let mut changed = false;
while let Some(dead_windows) = Some(TilingLayout::update_space_positions(
&mut self.trees,
space,
@ -205,6 +207,12 @@ impl TilingLayout {
for window in dead_windows {
self.unmap_window_internal(&window);
}
changed = true;
}
if changed {
for window in &self.windows {
update_reactive_popups(space, window);
}
}
}

View file

@ -568,6 +568,10 @@ impl Shell {
focus_stack.iter(),
);
}
for window in self.active_space(output).space.windows() {
self.update_reactive_popups(window);
}
}
pub fn map_layer(&mut self, layer_surface: &LayerSurface, dh: &DisplayHandle) {
@ -644,6 +648,13 @@ impl Shell {
);
}
}
for window in self.active_space(output).space.windows() {
self.update_reactive_popups(window);
}
for window in self.spaces[idx].space.windows() {
self.update_reactive_popups(window);
}
}
}