From fccbfe29735090bb8cff8ddab8d51c5a67023724 Mon Sep 17 00:00:00 2001 From: zeljko Date: Sat, 12 Apr 2014 06:28:07 +0000 Subject: [PATCH] Qt: fixed clipping in stretchDraw.issue #26004 git-svn-id: trunk@44693 - --- lcl/interfaces/qt/qtwinapi.inc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lcl/interfaces/qt/qtwinapi.inc b/lcl/interfaces/qt/qtwinapi.inc index 6a3dea2cd2..3adf4c2aaf 100644 --- a/lcl/interfaces/qt/qtwinapi.inc +++ b/lcl/interfaces/qt/qtwinapi.inc @@ -6462,6 +6462,7 @@ var dx, dy: integer; OldRop: Integer; OldBkColor: TColorRef; + RestoreClip: Boolean; begin {$ifdef VerboseQtWinAPI} WriteLn('[WinAPI StretchMaskBlt]', @@ -6601,7 +6602,16 @@ begin if Rop <> SRCCOPY then DstQDC.Rop2 := Integer(Rop); try + RestoreClip := False; + 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); + end; DstQDC.drawImage(@DstRect, Image, @SrcRect, QMask, @MaskRect); + if RestoreClip then + DstQDC.setClipping(True); finally if Rop <> SRCCOPY then DstQDC.Rop2 := OldRop;