tree: damage stacked nodes when visibility changes
This commit is contained in:
parent
d1893a68eb
commit
fcaed80b84
3 changed files with 11 additions and 1 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue