Qt: better fix for StretchMaskBlt - do not stop clipping for no reason.issue #26004

git-svn-id: trunk@45064 -
This commit is contained in:
zeljko 2014-05-17 21:10:07 +00:00
parent ccb4ea0792
commit 8e2eaec4fc

View File

@ -6474,7 +6474,7 @@ function TQtWidgetSet.StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer;
var
SrcQDC: TQtDeviceContext absolute SrcDC;
DstQDC: TQtDeviceContext absolute DestDC;
SrcRect, DstRect, MaskRect: TRect;
SrcRect, DstRect, MaskRect, NewSrcRect: TRect;
Image, TmpImage, QMask, TmpMask: QImageH;
TmpPixmap: QPixmapH;
SrcMatrix: QTransformH;
@ -6625,8 +6625,13 @@ begin
if (SrcRect.Left < DstRect.Left) or (SrcRect.Top < DstRect.Top) and
DstQDC.getClipping and DstQDC.getClipRegion.containsRect(SrcRect) then
begin
RestoreClip := True;
DstQDC.setClipping(False);
NewSrcRect := DstRect;
OffsetRect(NewSrcRect, -DstRect.Left, -DstRect.Top);
RestoreClip := not EqualRect(NewSrcRect, SrcRect);
if not RestoreClip then
SrcRect := DstRect
else
DstQDC.setClipping(False);
end;
DstQDC.drawImage(@DstRect, Image, @SrcRect, QMask, @MaskRect);
if RestoreClip then