diff --git a/present/present.c b/present/present.c index aa265aabf..6386a90a8 100644 --- a/present/present.c +++ b/present/present.c @@ -120,9 +120,14 @@ present_set_tree_pixmap_visit(WindowPtr window, void *data) struct pixmap_visit *visit = data; ScreenPtr screen = window->drawable.pScreen; - if ((*screen->GetWindowPixmap)(window) != visit->old) - return WT_DONTWALKCHILDREN; - (*screen->SetWindowPixmap)(window, visit->new); + if ((*screen->GetWindowPixmap)(window) == visit->old) + (*screen->SetWindowPixmap)(window, visit->new); + + /* + * Walk the entire tree in case windows using the + * the old pixmap have been reparented to newly + * created windows using the screen pixmap instead. + */ return WT_WALKCHILDREN; }