diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c index 7372ec0985b..cd1ba7f4554 100644 --- a/dlls/gdiplus/brush.c +++ b/dlls/gdiplus/brush.c @@ -301,6 +301,7 @@ GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF* rect, GpLineGradient **line) { GpPointF start, end; + GpStatus stat; TRACE("(%p, %x, %x, %d, %d, %p)\n", rect, startcolor, endcolor, mode, wrap, line); @@ -313,7 +314,12 @@ GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF* rect, end.X = rect->X + rect->Width; end.Y = rect->Y + rect->Height; - return GdipCreateLineBrush(&start, &end, startcolor, endcolor, wrap, line); + stat = GdipCreateLineBrush(&start, &end, startcolor, endcolor, wrap, line); + + if (stat == Ok) + (*line)->rect = *rect; + + return stat; } GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect* rect, diff --git a/dlls/gdiplus/tests/brush.c b/dlls/gdiplus/tests/brush.c index 8ce5adb5629..b6fbe3044ef 100644 --- a/dlls/gdiplus/tests/brush.c +++ b/dlls/gdiplus/tests/brush.c @@ -379,10 +379,10 @@ static void test_gradientgetrect(void) memset(&rectf, 0, sizeof(GpRectF)); status = GdipGetLineRect(brush, &rectf); expect(Ok, status); - todo_wine expectf(10.0, rectf.X); - todo_wine expectf(10.0, rectf.Y); - todo_wine expectf(-100.0, rectf.Width); - todo_wine expectf(-100.0, rectf.Height); + expectf(10.0, rectf.X); + expectf(10.0, rectf.Y); + expectf(-100.0, rectf.Width); + expectf(-100.0, rectf.Height); status = GdipDeleteBrush((GpBrush*)brush); }