From d3626bd84f470fc41d09e8108064a8d196ff6c5a Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 14 May 2018 20:22:55 +0200 Subject: [PATCH] nitpicker: fix transparency artifacts The 'View_stack::draw_rec' method limited the redraw to parts of the view that were explicitly marked as dirty. This does not produce the desired result when stacking multiple transparent views. Here, the background views must be drawn regardless of whether they are marked as dirty or not. --- repos/os/src/server/nitpicker/view_stack.cc | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/repos/os/src/server/nitpicker/view_stack.cc b/repos/os/src/server/nitpicker/view_stack.cc index c8177d1cf4..ba40b7905b 100644 --- a/repos/os/src/server/nitpicker/view_stack.cc +++ b/repos/os/src/server/nitpicker/view_stack.cc @@ -213,13 +213,8 @@ void View_stack::refresh_view(View_component &view, Rect const rect) /* rectangle constrained to view geometry */ Rect const view_rect = Rect::intersect(rect, _outline(view)); - for (View_component *v = _first_view(); v; v = v->view_stack_next()) { - - Rect const intersection = Rect::intersect(view_rect, _outline(*v)); - - if (intersection.valid()) - _mark_view_as_dirty(*v, intersection); - } + for (View_component *v = _first_view(); v; v = v->view_stack_next()) + _mark_view_as_dirty(*v, view_rect); view.for_each_child([&] (View_component &child) { refresh_view(child, rect); }); }