[0.4.13][GDI32] Use Gdi Flush for SetViewportOrgEx

Fixes offset in combo texts and menu highlights.
Fixes CORE-16656 and regression CORE-16644,
which appeared by 0.4.13-dev-209-g
dc7f4f682f

No official release ever was affected fortunately.

cherry picked from commit 0.4.14-dev-966-g
c89e111c6a
This commit is contained in:
jimtabor 2020-02-13 17:05:38 -06:00 committed by Joachim Henze
parent 05225f1d20
commit 99dde2aa60

View file

@ -458,7 +458,7 @@ GetWindowOrgEx(
}
/*
* @unimplemented
* @implemented
*/
BOOL
WINAPI
@ -525,7 +525,7 @@ SetViewportExtEx(
}
/*
* @unimplemented
* @implemented
*/
BOOL
WINAPI
@ -577,7 +577,7 @@ SetWindowOrgEx(
}
/*
* @unimplemented
* @implemented
*/
BOOL
WINAPI
@ -648,7 +648,7 @@ SetWindowExtEx(
}
/*
* @unimplemented
* @implemented
*/
BOOL
WINAPI
@ -669,7 +669,16 @@ SetViewportOrgEx(
/* Do not set LastError here! */
return FALSE;
}
//// HACK : XP+ doesn't do this. See CORE-16656 & CORE-16644.
if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
{
if (pdcattr->ulDirty_ & DC_MODE_DIRTY)
{
NtGdiFlush();
pdcattr->ulDirty_ &= ~DC_MODE_DIRTY;
}
}
////
if (lpPoint)
{
lpPoint->x = pdcattr->ptlViewportOrg.x;