From 084fed8f6c603a0a9b7dc0782fba186c83f3b5f5 Mon Sep 17 00:00:00 2001 From: zeljko Date: Wed, 20 Oct 2010 06:38:47 +0000 Subject: [PATCH] Qt: fixed bug with QPainter translation in TQtWidgetSet.GetClipBox(). fixes #17670 git-svn-id: trunk@27769 - --- lcl/interfaces/qt/qtwinapi.inc | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lcl/interfaces/qt/qtwinapi.inc b/lcl/interfaces/qt/qtwinapi.inc index 68741ef309..8913656c79 100644 --- a/lcl/interfaces/qt/qtwinapi.inc +++ b/lcl/interfaces/qt/qtwinapi.inc @@ -2041,11 +2041,11 @@ begin if not IsValidDC(DC) then Result := ERROR; - if Result <> ERROR - then with TQtDeviceContext(DC) do + if Result <> ERROR then + with TQtDeviceContext(DC) do begin {$ifdef VerboseQtWinAPI} - Write('TQtWidgetSet.GetClipBox FastClip=', + Writeln('TQtWidgetSet.GetClipBox FastClip=', ((vClipRect <> nil) and not vClipRectDirty) ); {$endif} @@ -2064,10 +2064,9 @@ begin try QPainter_clipRegion(Widget, ARegion); GetWindowOrgEx(DC, @Pt); - QRegion_translate(ARegion, -Pt.X, -Pt.Y); + if (Pt.X <> 0) or (Pt.Y <> 0) then + SetWindowOrgEx(DC, Pt.X, Pt.Y, @Pt); QRegion_boundingRect(ARegion, lpRect); - dec(lpRect^.Right, -Pt.X); - dec(lpRect^.Bottom, -Pt.Y); finally QRegion_destroy(ARegion); end; @@ -2076,7 +2075,7 @@ begin if vImage <> nil then lpRect^ := Rect(0, 0, vImage.width, vImage.height); {$ifdef VerboseQtWinAPI} - WriteLn(' Rect=', dbgs(lprect^)); + WriteLn('TQtWidgetSet.GetClipBox Rect=', dbgs(lprect^)); {$endif} end; end; @@ -4008,7 +4007,7 @@ var IntersectRgn, Rgn: QRegionH; begin {$ifdef VerboseQtWinAPI} - WriteLn('[WinAPI TQtWidgetSet.IntersectClipRect] '); + WriteLn('[WinAPI TQtWidgetSet.IntersectClipRect] L ',Left,' T ',Top,' R ',Right,' B ',Bottom); {$endif} Result := ERROR; if not IsValidDC(DC) then exit;