- Fixed one of the msg:msg_paint:test_paint_messages while looking for another issue. See CORE-7166.

svn path=/trunk/; revision=72523
This commit is contained in:
James Tabor 2016-08-31 20:38:09 +00:00
parent 684902c4cc
commit 1ed7f14359
3 changed files with 18 additions and 5 deletions

View file

@ -9,9 +9,6 @@
#include <win32k.h>
DBG_DEFAULT_CHANNEL(UserPainting);
#define RDW_CLIPCHILDREN 4096
#define RDW_NOUPDATEDIRTY 32768
/* PRIVATE FUNCTIONS **********************************************************/
/**

View file

@ -12,6 +12,9 @@
#define PRGN_WINDOW ((PREGION)1) /* region from window rcWindow */
#define PRGN_MONITOR ((PREGION)2) /* region from monitor region. */
#define RDW_CLIPCHILDREN 4096
#define RDW_NOUPDATEDIRTY 32768
#define GreCreateRectRgnIndirect(prc) \
NtGdiCreateRectRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom)
@ -36,4 +39,4 @@ BOOL FASTCALL IntIntersectWithParents(PWND, RECTL *);
BOOL FASTCALL IntIsWindowDrawable(PWND);
BOOL UserDrawCaption(PWND,HDC,RECTL*,HFONT,HICON,const PUNICODE_STRING,UINT);
VOID FASTCALL UpdateThreadWindows(PWND,PTHREADINFO,HRGN);
VOID FASTCALL UserSyncAndPaintWindows(PWND pWnd, ULONG Flags);

View file

@ -2241,6 +2241,19 @@ co_WinPosSetWindowPos(
#endif
}
if ( !PosChanged &&
(WinPos.flags & SWP_FRAMECHANGED) &&
!(WinPos.flags & SWP_DEFERERASE) && // Prevent sending WM_SYNCPAINT message.
VisAfter )
{
PWND Parent = Window->spwndParent;
if ( !(Window->style & WS_CHILD) && (Parent) && (Parent->style & WS_CLIPCHILDREN))
{
TRACE("SWP_FRAMECHANGED Parent WS_CLIPCHILDREN\n");
UserSyncAndPaintWindows( Parent, RDW_CLIPCHILDREN);
}
}
// Fix wine msg test_SetFocus, prevents sending WM_WINDOWPOSCHANGED.
if ( VisBefore == NULL &&
VisBeforeJustClient == NULL &&
@ -3396,7 +3409,7 @@ NtUserSetWindowRgn(
}
else
{
Window->hrgnNewFrame = (HRGN) 1;
Window->hrgnNewFrame = HRGN_WINDOW;
}
//// HACK 2
Ret = co_WinPosSetWindowPos(Window, HWND_TOP, 0, 0, 0, 0, bRedraw ? flags : (flags|SWP_NOREDRAW) );