mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-11 20:19:14 +02:00
Qt: fixed drawText() background painting when BkMode = OPAQUE. issue #34587
git-svn-id: trunk@59667 -
This commit is contained in:
parent
7a666ba10a
commit
47da00028d
@ -2822,6 +2822,10 @@ end;
|
||||
To get a correct behavior we need to sum the text's height to the Y coordinate.
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TQtDeviceContext.drawText(x: Integer; y: Integer; s: PWideString);
|
||||
{$IFDEF DARWIN}
|
||||
var
|
||||
OldBkMode: Integer;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$ifdef VerboseQt}
|
||||
Write('TQtDeviceContext.drawText TargetX: ', X, ' TargetY: ', Y);
|
||||
@ -2842,11 +2846,20 @@ begin
|
||||
|
||||
// The ascent is only applied here, because it also needs
|
||||
// to be rotated
|
||||
{$IFDEF DARWIN}
|
||||
if getBKMode = OPAQUE then
|
||||
QPainter_fillRect(Widget, x, y - Metrics.ascent, Font.Metrics.width(s), Font.Metrics.height, QPainter_brush(Widget));
|
||||
|
||||
OldBkMode := SetBkMode(TRANSPARENT);
|
||||
{$ENDIF}
|
||||
if Font.Angle <> 0 then
|
||||
QPainter_drawText(Widget, 0, Metrics.ascent, s)
|
||||
else
|
||||
QPainter_drawText(Widget, x, y, s);
|
||||
|
||||
{$IFDEF DARWIN}
|
||||
SetBkMode(OldBkMode);
|
||||
{$ENDIF}
|
||||
|
||||
RestorePenColor;
|
||||
|
||||
// Restore previous angle
|
||||
@ -2869,6 +2882,10 @@ end;
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TQtDeviceContext.drawText(x, y, w, h, flags: Integer; s: PWideString);
|
||||
{$IFDEF DARWIN}
|
||||
var
|
||||
OldBkMode: Integer;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$ifdef VerboseQt}
|
||||
Write('TQtDeviceContext.drawText x: ', X, ' Y: ', Y,' w: ',w,' h: ',h);
|
||||
@ -2883,10 +2900,19 @@ begin
|
||||
end;
|
||||
|
||||
RestoreTextColor;
|
||||
{$IFDEF DARWIN}
|
||||
if getBKMode = OPAQUE then
|
||||
QPainter_fillRect(Widget, x, y, w, h, QPainter_brush(Widget));
|
||||
|
||||
OldBkMode := SetBkMode(TRANSPARENT);
|
||||
{$ENDIF}
|
||||
if Font.Angle <> 0 then
|
||||
QPainter_DrawText(Widget, 0, 0, w, h, Flags, s)
|
||||
else
|
||||
QPainter_DrawText(Widget, x, y, w, h, Flags, s);
|
||||
{$IFDEF DARWIN}
|
||||
SetBkMode(OldBkMode);
|
||||
{$ENDIF}
|
||||
RestorePenColor;
|
||||
|
||||
// Restore previous angle
|
||||
|
Loading…
Reference in New Issue
Block a user