From 8bbcf591cfe3d0d5b9b5bfed3d34a5fca1696ec0 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 23 Jan 2024 11:25:30 +0100 Subject: [PATCH] SynEdit: fix charwidths issue in paint. Broken in fad67e71ecd08a4c926e221f6553adadb9498aea Issue #40716 --- components/synedit/lazsyntextarea.pp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/components/synedit/lazsyntextarea.pp b/components/synedit/lazsyntextarea.pp index 095a537bef..af69086816 100644 --- a/components/synedit/lazsyntextarea.pp +++ b/components/synedit/lazsyntextarea.pp @@ -55,6 +55,7 @@ type FMarkupManager: TSynEditMarkupManager; FCharWidths, FCharWidths2: TPhysicalCharWidths; + FCharWidthsFromConverter: Boolean; FCharWidthsLen: Integer; FCurTxtLineIdx : Integer; FCurLineByteLen: Integer; @@ -315,6 +316,7 @@ procedure TLazSynPaintTokenBreaker.Finish; begin FCharWidths := nil; FCharWidths2 := nil; + FCharWidthsFromConverter := False; end; procedure TLazSynPaintTokenBreaker.SetHighlighterTokensLine(ALine: TLineIdx; out @@ -324,14 +326,18 @@ var begin FDisplayView.SetHighlighterTokensLine(ALine, ARealLine, LogLeftPos, FCurLineByteLen); if FLinesView.LogPhysConvertor.CurrentLine = ARealLine then begin - FCharWidths2 := FCharWidths; + if not FCharWidthsFromConverter then begin + FCharWidthsFromConverter := True; + FCharWidths2 := FCharWidths; + end; FCharWidths :=FLinesView.LogPhysConvertor.CurrentWidthsDirect; FCharWidthsLen :=FLinesView.LogPhysConvertor.CurrentWidthsCount; end else begin - if FCharWidths2 <> nil then begin + if FCharWidthsFromConverter then begin FCharWidths := FCharWidths2; FCharWidths2 := nil; + FCharWidthsFromConverter := False; end; FLinesView.GetPhysicalCharWidths(ARealLine, FCharWidths, FCharWidthsLen); end;