mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2026-01-07 04:10:59 +01:00
Qt: better fix for StretchMaskBlt - do not stop clipping for no reason.issue #26004
git-svn-id: trunk@45064 -
This commit is contained in:
parent
ccb4ea0792
commit
8e2eaec4fc
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user