mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:37:43 +00:00
WindowServer: Fix bug where window content could bleed through menus.
We have to iterate using for_each_visible_window_from_back_to_front() if we want every window in the correct order.
This commit is contained in:
parent
ed61fdbc32
commit
94df0c1ba6
1 changed files with 23 additions and 12 deletions
|
@ -871,18 +871,29 @@ void WSWindowManager::compose()
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto any_opaque_window_above_this_one_contains_rect = [this] (const WSWindow& a_window, const Rect& r) {
|
auto any_opaque_window_above_this_one_contains_rect = [this] (const WSWindow& a_window, const Rect& rect) -> bool {
|
||||||
for (auto* window = a_window.next(); window; window = window->next()) {
|
bool found = false;
|
||||||
if (!window->is_visible())
|
bool checking = false;
|
||||||
continue;
|
for_each_visible_window_from_back_to_front([&] (WSWindow& window) {
|
||||||
if (window->opacity() < 1.0f)
|
if (&window == &a_window) {
|
||||||
continue;
|
checking = true;
|
||||||
if (window->has_alpha_channel())
|
return IterationDecision::Continue;
|
||||||
continue;
|
}
|
||||||
if (outer_window_rect(*window).contains(r))
|
if (!checking)
|
||||||
return true;
|
return IterationDecision::Continue;
|
||||||
}
|
if (!window.is_visible())
|
||||||
return false;
|
return IterationDecision::Continue;;
|
||||||
|
if (window.opacity() < 1.0f)
|
||||||
|
return IterationDecision::Continue;;
|
||||||
|
if (window.has_alpha_channel())
|
||||||
|
return IterationDecision::Continue;;
|
||||||
|
if (outer_window_rect(window).contains(rect)) {
|
||||||
|
found = true;
|
||||||
|
return IterationDecision::Abort;
|
||||||
|
}
|
||||||
|
return IterationDecision::Continue;
|
||||||
|
});
|
||||||
|
return found;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto any_dirty_rect_intersects_window = [&dirty_rects] (const WSWindow& window) {
|
auto any_dirty_rect_intersects_window = [&dirty_rects] (const WSWindow& window) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue