diff --git a/windows/winpos.c b/windows/winpos.c index 79813b6cf37c338557d71a168faf1c4beb9264df..227f5e0ae5946dcb0c56edc2cda277aa8545d5f2 100644 --- a/windows/winpos.c +++ b/windows/winpos.c @@ -2838,42 +2838,29 @@ Pos: /* ----------------------------------------------------------------------- { if( !(winpos.flags & SWP_NOREDRAW) ) { - if (wndPtr->parent == wndTemp) - { - /* Desktop does not receive wm_paint message so we use RDW_ERASENOW to erase the - the desktop window */ + /* Use PAINT_RedrawWindow to explicitly force an invalidation of the window, + its parent and sibling and so on, and then erase the parent window + back ground if the parent is either a top-level window or its parent's parent + is top-level window. Rely on the system to repaint other affected + windows later on. */ if( uFlags & SWP_EX_PAINTSELF ) { - PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn, RDW_ERASE | RDW_FRAME | - ((winpos.flags & SWP_DEFERERASE) ? 0 : RDW_ERASENOW) | RDW_INVALIDATE | - RDW_ALLCHILDREN, RDW_EX_XYWINDOW | RDW_EX_USEHRGN ); + PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn, + RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN, + RDW_EX_XYWINDOW | RDW_EX_USEHRGN ); } else { PAINT_RedrawWindow( wndPtr->parent->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn, - RDW_ERASE | RDW_ERASENOW | RDW_INVALIDATE | RDW_ALLCHILDREN, RDW_EX_USEHRGN ); - } + RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN, + RDW_EX_USEHRGN ); } - else - { - if( uFlags & SWP_EX_PAINTSELF ) - { - /* Use PAINT_RedrawWindow to explicitly force an invalidation of the window, - its parent and sibling and so on, and then update the parent window, - the non-top-level window. Rely on the system to repaint other affected - windows later on. */ - PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn, RDW_ERASE | - RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN, RDW_EX_XYWINDOW | RDW_EX_USEHRGN ); - } - else + if(wndPtr -> parent == wndTemp || wndPtr->parent->parent == wndTemp ) { - PAINT_RedrawWindow( wndPtr->parent->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn, - RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN, RDW_EX_USEHRGN ); - - UpdateWindow( wndPtr->parent->hwndSelf); - } + PAINT_RedrawWindow( wndPtr->parent->hwndSelf, NULL, 0, + RDW_ERASENOW | RDW_NOCHILDREN, 0 ); } } if( visRgn != 1 )