diff --git a/source/gui/detail/window_manager.cpp b/source/gui/detail/window_manager.cpp index 0bc25362..6cfabb94 100644 --- a/source/gui/detail/window_manager.cpp +++ b/source/gui/detail/window_manager.cpp @@ -1413,6 +1413,9 @@ namespace detail else native_interface::move_window(wd->other.attribute.frame->container, wd->pos_root.x, wd->pos_root.y); + if (wd->displayed() && wd->effect.bground) + window_layer::make_bground(wd); + for (auto child : wd->children) _m_move_core(child, delta); } diff --git a/source/gui/programming_interface.cpp b/source/gui/programming_interface.cpp index e70f64eb..6a64dc2d 100644 --- a/source/gui/programming_interface.cpp +++ b/source/gui/programming_interface.cpp @@ -544,10 +544,19 @@ namespace API internal_scope_guard lock; if(restrict::window_manager.move(iwd, x, y, false)) { - if (category::flags::root != iwd->other.category) - iwd = iwd->seek_non_lite_widget_ancestor(); + restrict::core_window_t* update_wd = nullptr; + if (iwd->displayed() && iwd->effect.bground) + { + update_wd = iwd; + restrict::window_manager.update(iwd, true, false); + } - restrict::window_manager.update(iwd, false, false); + restrict::core_window_t* anc = iwd; + if (category::flags::root != iwd->other.category) + anc = iwd->seek_non_lite_widget_ancestor(); + + if (anc != update_wd) + restrict::window_manager.update(anc, false, false); } }