From 1c0abfedcbfa26a3279e8a75ad1eb10fb6e3188d Mon Sep 17 00:00:00 2001 From: martin Date: Fri, 10 Jun 2016 21:34:50 +0000 Subject: [PATCH] SynEdit: more precise change indicator gutter. Issue #30152 git-svn-id: trunk@52474 - --- components/synedit/syneditpointclasses.pas | 2 +- components/synedit/synedittextbuffer.pp | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/components/synedit/syneditpointclasses.pas b/components/synedit/syneditpointclasses.pas index 42059573f3..56130452ed 100644 --- a/components/synedit/syneditpointclasses.pas +++ b/components/synedit/syneditpointclasses.pas @@ -1981,13 +1981,13 @@ var FLines.EditInsert(LogCaretXY.X, LogCaretXY.Y, Value); FInternalCaret.BytePos := FInternalCaret.BytePos + Length(Value); end else begin + FLines.EditLineBreak(LogCaretXY.X, LogCaretXY.Y); if (P <> Start) or (LogCaretXY.X > 1 + length(FLines[ToIdx(LogCaretXY.Y)])) then begin SetString(Str, Value, P - Start); FLines.EditInsert(LogCaretXY.X, LogCaretXY.Y, Str); end else Str := ''; - FLines.EditLineBreak(LogCaretXY.X + (P - Start), LogCaretXY.Y); Result := CountLines(P); if Result > 1 then FLines.EditLinesInsert(LogCaretXY.Y + 1, Result - 1); diff --git a/components/synedit/synedittextbuffer.pp b/components/synedit/synedittextbuffer.pp index dc59279a68..0035906b7a 100644 --- a/components/synedit/synedittextbuffer.pp +++ b/components/synedit/synedittextbuffer.pp @@ -1333,15 +1333,22 @@ end; procedure TSynEditStringList.EditLineBreak(LogX, LogY: Integer); var s: string; + Y1, Y2: Integer; begin IncIsInEditAction; if Count = 0 then Add(''); s := Strings[LogY - 1]; + Y1 := LogY; if LogX - 1 < length(s) then - Strings[LogY - 1] := copy(s, 1, LogX - 1); + Strings[LogY - 1] := copy(s, 1, LogX - 1) + else + inc(Y1); Insert(LogY, copy(s, LogX, length(s))); CurUndoList.AddChange(TSynEditUndoTxtLineBreak.Create(LogY)); - MarkModified(LogY, LogY + 1); + Y2 := LogY; + if LogX > 1 then + inc(Y2); + MarkModified(Y1, Y2); SendNotification(senrEditAction, self, LogY, 1, LogX, 0, ''); DecIsInEditAction; end;