SynEdit: Fix height of screen caret

git-svn-id: trunk@34667 -
This commit is contained in:
martin 2012-01-08 17:07:03 +00:00
parent 7daa4be95a
commit dfd850c0b7
2 changed files with 10 additions and 2 deletions

View File

@ -48,6 +48,7 @@ type
procedure SetLeftChar(AValue: Integer); procedure SetLeftChar(AValue: Integer);
procedure SetPadding(Side: TLazSynBorderSide; AValue: integer); procedure SetPadding(Side: TLazSynBorderSide; AValue: integer);
procedure SetTopLine(AValue: TLinePos); procedure SetTopLine(AValue: TLinePos);
procedure DoDrawerFontChanged(Sender: TObject);
protected protected
procedure PaintTextLines(AClip: TRect; FirstLine, LastLine, procedure PaintTextLines(AClip: TRect; FirstLine, LastLine,
FirstCol, LastCol: integer); virtual; FirstCol, LastCol: integer); virtual;
@ -158,6 +159,11 @@ begin
FTopLine := AValue; FTopLine := AValue;
end; end;
procedure TLazSynTextArea.DoDrawerFontChanged(Sender: TObject);
begin
FontChanged;
end;
function TLazSynTextArea.ScreenColumnToXValue(Col: integer): integer; function TLazSynTextArea.ScreenColumnToXValue(Col: integer): integer;
begin begin
Result := FTextBounds.Left + (Col - LeftChar) * fCharWidth; Result := FTextBounds.Left + (Col - LeftChar) * fCharWidth;
@ -194,6 +200,7 @@ var
i: TLazSynBorderSide; i: TLazSynBorderSide;
begin begin
FTextDrawer := ATextDrawer; FTextDrawer := ATextDrawer;
FTextDrawer.RegisterOnFontChangeHandler(@DoDrawerFontChanged);
FPaintLineColor := TSynSelectedColor.Create; FPaintLineColor := TSynSelectedColor.Create;
FPaintLineColor2 := TSynSelectedColor.Create; FPaintLineColor2 := TSynSelectedColor.Create;
for i := low(TLazSynBorderSide) to high(TLazSynBorderSide) do for i := low(TLazSynBorderSide) to high(TLazSynBorderSide) do
@ -205,6 +212,7 @@ end;
destructor TLazSynTextArea.Destroy; destructor TLazSynTextArea.Destroy;
begin begin
FTextDrawer.UnRegisterOnFontChangeHandler(@DoDrawerFontChanged);
FreeAndNil(FPaintLineColor); FreeAndNil(FPaintLineColor);
FreeAndNil(FPaintLineColor2); FreeAndNil(FPaintLineColor2);
inherited Destroy; inherited Destroy;

View File

@ -2223,7 +2223,7 @@ begin
end; end;
procedure TCustomSynEdit.FontChanged(Sender: TObject); procedure TCustomSynEdit.FontChanged(Sender: TObject);
begin begin // TODO: inherited ?
FLastSetFontSize := Font.Height; FLastSetFontSize := Font.Height;
RecalcCharExtent; RecalcCharExtent;
end; end;
@ -7200,7 +7200,7 @@ begin
FScreenCaret.Lock; FScreenCaret.Lock;
try try
FScreenCaret.CharWidth := CharWidth; FScreenCaret.CharWidth := CharWidth;
FScreenCaret.CharHeight := LineHeight; FScreenCaret.CharHeight := LineHeight - Max(0, ExtraLineSpacing);
SizeOrFontChanged(TRUE); SizeOrFontChanged(TRUE);
finally finally
FScreenCaret.UnLock; FScreenCaret.UnLock;