Fix a bug in SetWindowPos to prevent parent from erasing its child
painting area when parent window and child window don't have WS_CLIPCHILDREN and WS_CLIPSIBLINGS.
This commit is contained in:
parent
526ffdc304
commit
8e35d65f06
|
@ -2821,6 +2821,11 @@ 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 */
|
||||
|
||||
if( uFlags & SWP_EX_PAINTSELF )
|
||||
{
|
||||
PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn, RDW_ERASE | RDW_FRAME |
|
||||
|
@ -2829,9 +2834,29 @@ Pos: /* -----------------------------------------------------------------------
|
|||
}
|
||||
else
|
||||
{
|
||||
PAINT_RedrawWindow( wndPtr->parent->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn, RDW_ERASE |
|
||||
((winpos.flags & SWP_DEFERERASE) ? 0 : RDW_ERASENOW) | RDW_INVALIDATE |
|
||||
RDW_ALLCHILDREN, RDW_EX_USEHRGN );
|
||||
PAINT_RedrawWindow( wndPtr->parent->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn,
|
||||
RDW_ERASE | RDW_ERASENOW | 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
|
||||
{
|
||||
PAINT_RedrawWindow( wndPtr->parent->hwndSelf, NULL, (visRgn == 1) ? 0 : visRgn,
|
||||
RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN, RDW_EX_USEHRGN );
|
||||
|
||||
UpdateWindow( wndPtr->parent->hwndSelf);
|
||||
}
|
||||
}
|
||||
}
|
||||
if( visRgn != 1 )
|
||||
|
|
Loading…
Reference in New Issue