1
0
Fork 0
forked from wry/wry

tree: damage stacked nodes when visibility changes

This commit is contained in:
Julian Orth 2024-07-15 13:44:33 +02:00
parent d1893a68eb
commit fcaed80b84
3 changed files with 11 additions and 1 deletions

View file

@ -470,6 +470,9 @@ impl StackedNode for Xwindow {
stacked_node_impl!();
fn stacked_set_visible(&self, visible: bool) {
let extents = self.x.surface.extents.get();
let (x, y) = self.x.surface.buffer_abs_pos.get().position();
self.data.state.damage(extents.move_(x, y));
self.tl_set_visible(visible);
}

View file

@ -241,6 +241,11 @@ impl XdgPopupRequestHandler for XdgPopup {
impl XdgPopup {
pub fn set_visible(&self, visible: bool) {
let surface = &self.xdg.surface;
let extents = surface.extents.get();
let (x, y) = surface.buffer_abs_pos.get().position();
surface.client.state.damage(extents.move_(x, y));
// log::info!("set visible = {}", visible);
self.set_visible_prepared.set(false);
self.xdg.set_visible(visible);

View file

@ -785,7 +785,9 @@ impl StackedNode for FloatNode {
stacked_node_impl!();
fn stacked_set_visible(&self, visible: bool) {
self.visible.set(visible);
if self.visible.replace(visible) != visible {
self.state.damage(self.position.get());
}
if let Some(child) = self.child.get() {
child.tl_set_visible(visible);
}