From b61f745148d56e914699cde97dded6c8d232c312 Mon Sep 17 00:00:00 2001 From: martin Date: Wed, 3 Aug 2011 12:13:29 +0000 Subject: [PATCH] SynEdit: Fixed/Workaround an issue with missing refresh (fold-line-mapping not updated), if no highlighter is assigned git-svn-id: trunk@31852 - --- components/synedit/synedit.pp | 5 ++++- components/synedit/syneditfoldedview.pp | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 68f0174415..4df7f649b7 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -4842,8 +4842,11 @@ begin exit; end; if not assigned(FHighlighter) then begin - if ATextChanged then + if ATextChanged then begin fMarkupManager.TextChanged(FChangedLinesStart, FChangedLinesEnd); + // TODO: see TSynEditFoldedView.LineCountChanged, this is only needed, because NeedFixFrom does not always work + FFoldedLinesView.FixFoldingAtTextIndex(FChangedLinesStart, FChangedLinesEnd); + end; Topline := TopLine; exit; end; diff --git a/components/synedit/syneditfoldedview.pp b/components/synedit/syneditfoldedview.pp index 8d86e0bca2..35d342b8e9 100644 --- a/components/synedit/syneditfoldedview.pp +++ b/components/synedit/syneditfoldedview.pp @@ -3936,7 +3936,9 @@ procedure TSynEditFoldedView.LineCountChanged(Sender: TSynEditStrings; AIndex, A begin {$IFDEF SynFoldDebug}try DebugLnEnter(['>> FOLD-- LineCountChanged AIndex=', AIndex, ' Acount=',ACount]);{$ENDIF} // no need for fix folding => synedit will be called, and scanlines will call fixfolding - {TODO: a "need fix folding" flag => to ensure it will be called if synedit doesnt} + {TODO: a "need fix folding" flag => to ensure it will be called if synedit doesnt + SynEdit.ScanRanges, calls Fixfolding as workaroound => review + } if (fLockCount > 0) and (AIndex < max(fNeedFixFrom, fNeedFixMinEnd)) then begin // adapt the fixfold range. Could be done smarter, but it doesn't matter if the range gets bigger than needed. if (ACount < 0) and (AIndex < fNeedFixFrom) then inc(fNeedFixFrom, ACount);