- Add a bypass flag to skip the Path support in IntGdiMoveToEx. See bug report 4364. This fixes 11 gdi path wine tests.
svn path=/trunk/; revision=44507
IntGdiMoveToEx(DC *dc,
int X,
int Y,
- LPPOINT Point);
+ LPPOINT Point,
+ BOOL BypassPath);
BOOL FASTCALL
IntGdiPolyBezier(DC *dc,
if (arctype == GdiTypeArcTo)
{
if (dc->dclevel.flPath & DCPATH_CLOCKWISE)
- IntGdiMoveToEx(dc, XStartArc, YStartArc, NULL);
+ IntGdiMoveToEx(dc, XStartArc, YStartArc, NULL, TRUE);
else
- IntGdiMoveToEx(dc, XEndArc, YEndArc, NULL);
+ IntGdiMoveToEx(dc, XEndArc, YEndArc, NULL, TRUE);
}
return Ret;
}
if (result)
{
- IntGdiMoveToEx(pDC, x2, y2, NULL); // Dont forget Path.
+ IntGdiMoveToEx(pDC, x2, y2, NULL, TRUE);
}
return result;
}
IntGdiMoveToEx(DC *dc,
int X,
int Y,
- LPPOINT Point)
+ LPPOINT Point,
+ BOOL BypassPath)
{
BOOL PathIsOpen;
PDC_ATTR pdcattr = dc->pdcattr;
CoordLPtoDP(dc, &pdcattr->ptfxCurrent); // Update fx
pdcattr->ulDirty_ &= ~(DIRTY_PTLCURRENT|DIRTY_PTFXCURRENT|DIRTY_STYLESTATE);
+ if (BypassPath) return TRUE;
+
PathIsOpen = PATH_IsPathOpen(dc->dclevel);
if ( PathIsOpen )
{
if ( lpbTypes[i] == PT_MOVETO )
{
- IntGdiMoveToEx( dc, lppt[i].x, lppt[i].y, NULL );
+ IntGdiMoveToEx( dc, lppt[i].x, lppt[i].y, NULL, FALSE );
lastmove.x = pdcattr->ptlCurrent.x;
lastmove.y = pdcattr->ptlCurrent.y;
}
POINT pt;
IntGetCurrentPositionEx(dc, &pt);
IntDPtoLP(dc, &pt, 1);
- IntGdiMoveToEx(dc, pt.x, pt.y, NULL);
+ IntGdiMoveToEx(dc, pt.x, pt.y, NULL, FALSE);
}
DPRINT("Leave %s, ret=%d\n", __FUNCTION__, ret);
return ret;