1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 07:35:08 +00:00

WindowServer: Window iteration should see the highlight window "in front".

This commit is contained in:
Andreas Kling 2019-03-10 02:33:43 +01:00
parent 420ef4da8a
commit a149ad9b44
2 changed files with 19 additions and 15 deletions

View file

@ -914,12 +914,12 @@ void WSWindowManager::compose()
m_back_painter->blit(dirty_rect.location(), *m_wallpaper, dirty_rect);
}
auto compose_window = [&] (WSWindow& window) {
for_each_visible_window_from_back_to_front([&] (WSWindow& window) {
RetainPtr<GraphicsBitmap> backing_store = window.backing_store();
if (!backing_store)
return;
return IterationDecision::Continue;
if (!any_dirty_rect_intersects_window(window))
return;
return IterationDecision::Continue;
PainterStateSaver saver(*m_back_painter);
m_back_painter->set_clip_rect(outer_window_rect(window));
for (auto& dirty_rect : dirty_rects.rects()) {
@ -939,21 +939,9 @@ void WSWindowManager::compose()
else
m_back_painter->blit_with_opacity(dst, *backing_store, dirty_rect_in_window_coordinates, window.opacity());
}
};
for_each_visible_window_from_back_to_front([&] (WSWindow& window) {
if (&window != m_highlight_window.ptr())
compose_window(window);
return IterationDecision::Continue;
});
if (m_highlight_window)
compose_window(*m_highlight_window);
draw_menubar();
if (m_switcher.is_visible())
compose_window(*m_switcher.switcher_window());
draw_cursor();
if (m_flash_flush) {