SynEdit, removed a circular unit ref

git-svn-id: trunk@20684 -
This commit is contained in:
martin 2009-06-20 20:25:21 +00:00
parent 516a894ca7
commit 29b5dce82a
8 changed files with 90 additions and 90 deletions

View File

@ -1578,6 +1578,7 @@ begin
fMarkupManager.AddMarkUp(fMarkupWordGroup);
fMarkupManager.AddMarkUp(fMarkupSelection);
fMarkupManager.Lines := FTheLinesView;
fMarkupManager.Caret := FCaret;
fMarkupManager.InvalidateLinesMethod := @InvalidateLines;
Color := clWhite;
@ -3819,7 +3820,6 @@ begin
InvalidateGutterLines(FCaret.LinePos, FCaret.LinePos);
end;
EnsureCursorPosVisible;
FMarkupManager.Caret := FCaret.LineCharPos;
if fPaintLock = 0 then
fMarkupHighCaret.CheckState; // Todo need a global lock, including the markup
end;
@ -3903,7 +3903,6 @@ Begin
// Force caret reset
CaretXY := CaretXY;
EnsureCursorPosVisible;
fMarkupManager.Caret := CaretXY;
finally
if not AddToUndoList then begin
fUndoList.Unlock;

View File

@ -26,7 +26,7 @@ unit SynEditMarkup;
interface
uses
Classes, SysUtils, Graphics, SynEditTextBase,
Classes, SysUtils, Graphics, SynEditTextBase, SynEditPointClasses,
SynEditMiscClasses, SynEditMiscProcs, Controls, SynEditHighlighter;
type
@ -40,12 +40,12 @@ type
TSynEditMarkup = class(TObject)
private
fMarkupInfo : TSynSelectedColor;
fLines : TSynEditStrings;
fCaret : TPoint;
fTopLine, FLinesInWindow : Integer;
fSynEdit : TCustomControl;
fInvalidateLinesMethod : TInvalidateLines;
FMarkupInfo : TSynSelectedColor;
FLines : TSynEditStrings;
FCaret : TSynEditCaret;
FTopLine, FLinesInWindow : Integer;
FSynEdit : TSynEditBase;
FInvalidateLinesMethod : TInvalidateLines;
FEnabled: Boolean;
FTempEnable: Integer;
@ -66,9 +66,9 @@ type
procedure SetLines(const AValue : TSynEditStrings); virtual;
procedure SetTopLine(const AValue : Integer); virtual;
procedure SetLinesInWindow(const AValue : Integer); virtual;
procedure SetCaret(const AValue : TPoint); virtual;
procedure SetCaret(const AValue : TSynEditCaret); virtual;
procedure DoCaretChanged(OldCaret : TPoint); virtual;
procedure DoCaretChanged(Sender: TObject); virtual;
procedure DoTopLineChanged(OldTopLine : Integer); virtual;
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); virtual;
procedure DoTextChanged(StartLine, EndLine : Integer); virtual;
@ -80,9 +80,9 @@ type
function LogicalToPhysicalPos(const p: TPoint): TPoint;
function Highlighter: TSynCustomHighlighter;
property SynEdit : TCustomControl read fSynEdit;
property SynEdit : TSynEditBase read fSynEdit;
public
constructor Create(ASynEdit : TCustomControl);
constructor Create(ASynEdit : TSynEditBase);
destructor Destroy; override;
Procedure PrepareMarkupForRow(aRow : Integer); virtual;
Procedure FinishMarkupForRow(aRow : Integer); virtual;
@ -102,7 +102,7 @@ type
property Style : TFontStyles read GetStyle;
property Enabled: Boolean read GetEnabled write SetEnabled;
property Lines : TSynEditStrings read fLines write SetLines;
property Caret : TPoint read fCaret write SetCaret;
property Caret : TSynEditCaret read fCaret write SetCaret;
property TopLine : Integer read fTopLine write SetTopLine;
property LinesInWindow : Integer read fLinesInWindow write SetLinesInWindow;
property InvalidateLinesMethod : TInvalidateLines write SetInvalidateLinesMethod;
@ -121,9 +121,9 @@ type
procedure SetLines(const AValue : TSynEditStrings); override;
procedure SetTopLine(const AValue : Integer); override;
procedure SetLinesInWindow(const AValue : Integer); override;
procedure SetCaret(const AValue : TPoint); override;
procedure SetCaret(const AValue : TSynEditCaret); override;
public
constructor Create(ASynEdit : TCustomControl);
constructor Create(ASynEdit : TSynEditBase);
destructor Destroy; override;
Procedure AddMarkUp(aMarkUp : TSynEditMarkup);
@ -223,14 +223,17 @@ begin
fInvalidateLinesMethod := AValue;
end;
procedure TSynEditMarkup.SetCaret(const AValue : TPoint);
procedure TSynEditMarkup.SetCaret(const AValue : TSynEditCaret);
var
OldValue : TPoint;
r: Boolean;
begin
if (fCaret.x = AValue.X) and (fCaret.Y = AValue.Y) then exit;
OldValue := fCaret;
fCaret := AValue;
DoCaretChanged(OldValue);
// inly register caret change callback, if handler is overriden
r := TMethod(@Self.DoCaretChanged).Code <> Pointer(@TSynEditMarkup.DoCaretChanged);
if r and (FCaret <> nil) then
FCaret.RemoveChangeHandler(@DoCaretChanged);
FCaret := AValue;
if r and (FCaret <> nil) then
FCaret.AddChangeHandler(@DoCaretChanged);
end;
procedure TSynEditMarkup.SetTopLine(const AValue : Integer);
@ -253,7 +256,7 @@ begin
DoLinesInWindoChanged(OldValue);
end;
procedure TSynEditMarkup.DoCaretChanged(OldCaret : TPoint);
procedure TSynEditMarkup.DoCaretChanged(Sender: TObject);
begin
end;
@ -291,7 +294,7 @@ end;
function TSynEditMarkup.LogicalToPhysicalPos(const p : TPoint) : TPoint;
begin
Result := TSynEdit(SynEdit).LogicalToPhysicalPos(p);
Result := FLines.LogicalToPhysicalPos(p);
end;
function TSynEditMarkup.Highlighter : TSynCustomHighlighter;
@ -299,7 +302,7 @@ begin
Result := TSynEdit(SynEdit).Highlighter;
end;
constructor TSynEditMarkup.Create(ASynEdit : TCustomControl);
constructor TSynEditMarkup.Create(ASynEdit : TSynEditBase);
begin
inherited Create();
fSynEdit := ASynEdit;
@ -345,7 +348,7 @@ end;
{ TSynEditMarkupManager }
constructor TSynEditMarkupManager.Create(ASynEdit : TCustomControl);
constructor TSynEditMarkupManager.Create(ASynEdit : TSynEditBase);
begin
inherited Create(ASynEdit);
fMarkUpList := TList.Create;
@ -364,7 +367,11 @@ end;
procedure TSynEditMarkupManager.AddMarkUp(aMarkUp : TSynEditMarkup);
begin
fMarkUpList.Add(aMarkUp);
aMarkUp.Lines := Lines;;
aMarkUp.Lines := Lines;
aMarkUp.Caret := Caret;
aMarkUp.TopLine := TopLine;
aMarkUp.LinesInWindow := LinesInWindow;
aMarkUp.InvalidateLinesMethod := FInvalidateLinesMethod;
end;
function TSynEditMarkupManager.Count: Integer;
@ -509,7 +516,7 @@ begin
TSynEditMarkup(fMarkUpList[i]).SetLinesInWindow(AValue);
end;
procedure TSynEditMarkupManager.SetCaret(const AValue : TPoint);
procedure TSynEditMarkupManager.SetCaret(const AValue : TSynEditCaret);
var
i : integer;
begin

View File

@ -46,13 +46,13 @@ type
protected
procedure FindMatchingBracketPair(PhysCaret: TPoint;
var StartBracket, EndBracket: TPoint);
procedure DoCaretChanged(OldCaret : TPoint); override;
procedure DoCaretChanged(Sender: TObject); override;
procedure DoTopLineChanged(OldTopLine : Integer); override;
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
procedure DoTextChanged(StartLine, EndLine : Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
public
constructor Create(ASynEdit: TCustomControl);
constructor Create(ASynEdit: TSynEditBase);
function GetMarkupAttributeAtRowCol(const aRow, aCol: Integer): TSynSelectedColor; override;
function GetNextMarkupColAfterRowCol(const aRow, aCol: Integer): Integer; override;
@ -67,7 +67,7 @@ uses
{ TSynEditMarkupBracket }
constructor TSynEditMarkupBracket.Create(ASynEdit : TCustomControl);
constructor TSynEditMarkupBracket.Create(ASynEdit : TSynEditBase);
begin
inherited Create(ASynEdit);
FBracketHighlightPos.Y := -1;
@ -110,7 +110,7 @@ begin
begin
// need to dec PhysCaret, in case we are in the middle of a tab
dec(PhysCaret.x);
LogCaretXY := TSynEdit(SynEdit).PhysicalToLogicalPos(PhysCaret);
LogCaretXY := Lines.PhysicalToLogicalPos(PhysCaret);
x := LogCaretXY.x;
if (x <= length(StartLine)) and (StartLine[x] in Brackets) then
begin
@ -124,7 +124,7 @@ begin
if (HighlightStyle in [sbhsRightOfCursor, sbhsBoth]) then
begin
LogCaretXY := TSynEdit(SynEdit).PhysicalToLogicalPos(PhysCaret);
LogCaretXY := Lines.PhysicalToLogicalPos(PhysCaret);
x := LogCaretXY.x;
if (x <= length(StartLine)) and (StartLine[x] in Brackets) then
begin
@ -134,7 +134,7 @@ begin
end;
end;
procedure TSynEditMarkupBracket.DoCaretChanged(OldCaret: TPoint);
procedure TSynEditMarkupBracket.DoCaretChanged(Sender: TObject);
begin
InvalidateBracketHighlight;
end;
@ -163,10 +163,11 @@ procedure TSynEditMarkupBracket.InvalidateBracketHighlight;
var
NewPos, NewAntiPos, SwapPos : TPoint;
begin
if Caret = nil then exit;
NewPos.Y:=-1;
NewAntiPos.Y:=-1;
if eoBracketHighlight in TSynEdit(SynEdit).Options
then FindMatchingBracketPair(TSynEdit(SynEdit).CaretXY, NewPos, NewAntiPos);
then FindMatchingBracketPair(Caret.LineCharPos, NewPos, NewAntiPos);
// Always keep ordered
if (NewAntiPos.Y > 0)

View File

@ -54,7 +54,7 @@ type
procedure UpdateCtrlMouse;
property LastMouseCaret: TPoint read FLastMouseCaret write SetLastMouseCaret;
public
constructor Create(ASynEdit: TCustomControl);
constructor Create(ASynEdit: TSynEditBase);
destructor Destroy; override;
Procedure EndMarkup; override;
@ -117,7 +117,7 @@ begin
if FLastControlIsPressed and (LastMouseCaret.X>0) and (LastMouseCaret.Y>0) then begin
// show link
NewY := LastMouseCaret.Y;
TSynEdit(SynEdit).GetWordBoundsAtRowCol(TSynEdit(SynEdit).PhysicalToLogicalPos(LastMouseCaret),NewX1,NewX2);
TSynEdit(SynEdit).GetWordBoundsAtRowCol(Lines.PhysicalToLogicalPos(LastMouseCaret),NewX1,NewX2);
if (NewY = CtrlMouseLine) and
(NewX1 = CtrlMouseX1) and
(NewX2 = CtrlMouseX2)
@ -150,7 +150,7 @@ begin
end;
end;
constructor TSynEditMarkupCtrlMouseLink.Create(ASynEdit: TCustomControl);
constructor TSynEditMarkupCtrlMouseLink.Create(ASynEdit: TSynEditBase);
begin
inherited Create(ASynEdit);
FLastControlIsPressed := false;

View File

@ -116,7 +116,7 @@ type
property HideSingleMatch: Boolean read FHideSingleMatch write FHideSingleMatch;
property MatchCount: Integer read GetMatchCount;
public
constructor Create(ASynEdit : TCustomControl);
constructor Create(ASynEdit : TSynEditBase);
destructor Destroy; override;
Function GetMarkupAttributeAtRowCol(const aRow, aCol : Integer) : TSynSelectedColor; override;
@ -152,11 +152,10 @@ type
procedure SetSelection(const AValue: TSynEditSelection);
procedure SetTrim(const AValue: Boolean);
procedure SetWaitTime(const AValue: Integer);
function LogicalCaret: TPoint;
protected
procedure SetSearchString(const AValue : String); override;
procedure SelectionChanged(Sender: TObject);
procedure DoCaretChanged(OldCaret : TPoint); override;
procedure DoCaretChanged(Sender: TObject); override;
procedure DoTextChanged(StartLine, EndLine : Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure RestartTimer;
@ -164,7 +163,7 @@ type
function GetCurrentText: String;
function GetCurrentOption: TSynSearchOptions;
public
constructor Create(ASynEdit : TCustomControl);
constructor Create(ASynEdit : TSynEditBase);
destructor Destroy; override;
procedure CheckState; // Todo need a global lock, including the markup
procedure ToggleCurrentWord;
@ -310,7 +309,7 @@ end;
{ TSynEditMarkupHighlightAll }
constructor TSynEditMarkupHighlightAll.Create(ASynEdit : TCustomControl);
constructor TSynEditMarkupHighlightAll.Create(ASynEdit : TSynEditBase);
begin
inherited Create(ASynEdit);
fSearch := TSynEditSearch.Create;
@ -417,7 +416,7 @@ begin
Pos := 0;
FindInitialize(false);
ptEnd.Y:= min(TCustomSynEdit(SynEdit).ScreenRowToRow(LinesInWindow)+100, Lines.Count);
ptEnd.Y:= min(ScreenRowToRow(LinesInWindow)+100, Lines.Count);
ptEnd.X:= Length(Lines[ptEnd.y - 1]);
While (true) do begin
@ -544,12 +543,6 @@ begin
RestartTimer;
end;
function TSynEditMarkupHighlightAllCaret.LogicalCaret: TPoint;
begin
Result := TCustomSynEdit(SynEdit).PhysicalToLogicalPos
(TCustomSynEdit(SynEdit).CaretXY);
end;
procedure TSynEditMarkupHighlightAllCaret.SetSearchString(const AValue: String);
begin
inherited SetSearchString(AValue);
@ -607,7 +600,7 @@ procedure TSynEditMarkupHighlightAllCaret.CheckState;
var
t: String;
begin
if not FStateChanged then
if (not FStateChanged) or (Caret = nil) then
exit;
FStateChanged := False;
t := GetCurrentText;
@ -617,9 +610,9 @@ begin
end;
if (SearchString <> '') and
( ((CompareCarets(FLowBound, FOldLowBound) = 0) and
(CompareCarets(LogicalCaret, FUpBound) >= 0) and (MatchCount > 1) )
(CompareCarets(Caret.LineBytePos, FUpBound) >= 0) and (MatchCount > 1) )
OR ((CompareCarets(FUpBound, FOldUpBound) = 0) and
(CompareCarets(LogicalCaret, FLowBound) <= 0) and (MatchCount > 1) )
(CompareCarets(Caret.LineBytePos, FLowBound) <= 0) and (MatchCount > 1) )
) then begin
ScrollTimerHandler(self);
exit;
@ -635,7 +628,7 @@ begin
inherited;
end;
procedure TSynEditMarkupHighlightAllCaret.DoCaretChanged(OldCaret: TPoint);
procedure TSynEditMarkupHighlightAllCaret.DoCaretChanged(Sender: TObject);
begin
FStateChanged := True; // Something changed, paint will be called
inherited;
@ -683,24 +676,26 @@ function TSynEditMarkupHighlightAllCaret.GetCurrentText: String;
Result := copy(Result, 1, i);
end;
begin
if Caret = nil then
exit('');
if FToggledWord <> '' then
exit(FToggledWord);
If TCustomSynEdit(SynEdit).SelAvail then begin
If TSynEdit(SynEdit).SelAvail then begin
if FTrim then
Result := TrimS(TCustomSynEdit(SynEdit).SelText)
Result := TrimS(TSynEdit(SynEdit).SelText)
else
Result := TCustomSynEdit(SynEdit).SelText;
Result := TSynEdit(SynEdit).SelText;
if TrimS(Result) = '' then Result := '';
FLowBound := TCustomSynEdit(SynEdit).BlockBegin;
FUpBound := TCustomSynEdit(SynEdit).BlockEnd;
FLowBound := TSynEdit(SynEdit).BlockBegin;
FUpBound := TSynEdit(SynEdit).BlockEnd;
end else begin
Result := TCustomSynEdit(SynEdit).GetWordAtRowCol(LogicalCaret);
Result := TSynEdit(SynEdit).GetWordAtRowCol(Caret.LineBytePos);
if FIgnoreKeywords and assigned(FHighlighter)
and FHighlighter.IsKeyword(Result) then
Result := '';
FLowBound.Y := LogicalCaret.Y;
FUpBound.Y := LogicalCaret.Y;
TCustomSynEdit(SynEdit).GetWordBoundsAtRowCol(LogicalCaret, FLowBound.X, FUpBound.X);
FLowBound.Y := Caret.LinePos;
FUpBound.Y := Caret.LinePos;
TSynEdit(SynEdit).GetWordBoundsAtRowCol(Caret.LineBytePos, FLowBound.X, FUpBound.X);
end;
end;
@ -708,7 +703,7 @@ function TSynEditMarkupHighlightAllCaret.GetCurrentOption: TSynSearchOptions;
begin
if FToggledWord <> '' then
exit(FToggledOption);
If TCustomSynEdit(SynEdit).SelAvail or not(FFullWord) then
If TSynEdit(SynEdit).SelAvail or not(FFullWord) then
Result := []
else
if (FFullWordMaxLen >0) and (UTF8Length(GetCurrentText) > FFullWordMaxLen) then
@ -717,7 +712,7 @@ begin
Result := [ssoWholeWord];
end;
constructor TSynEditMarkupHighlightAllCaret.Create(ASynEdit: TCustomControl);
constructor TSynEditMarkupHighlightAllCaret.Create(ASynEdit: TSynEditBase);
begin
inherited Create(ASynEdit);
FStateChanged := False;

View File

@ -43,7 +43,7 @@ type
procedure SetUseIncrementalColor(const AValue : Boolean);
procedure MarkupChangedIntern(AMarkup: TObject);
public
constructor Create(ASynEdit : TCustomControl; ASelection: TSynEditSelection);
constructor Create(ASynEdit : TSynEditBase; ASelection: TSynEditSelection);
destructor Destroy; override;
Procedure PrepareMarkupForRow(aRow : Integer); override;
@ -76,7 +76,7 @@ begin
else MarkupInfo.Assign(FMarkupInfoSelection);
end;
constructor TSynEditMarkupSelection.Create(ASynEdit : TCustomControl; ASelection: TSynEditSelection);
constructor TSynEditMarkupSelection.Create(ASynEdit : TSynEditBase; ASelection: TSynEditSelection);
begin
inherited Create(ASynEdit);
FSelection := ASelection;

View File

@ -47,13 +47,13 @@ type
protected
procedure DoMarkupLineHighlightInfoChange(Sender: TObject);
function HasLineHighlight: Boolean;
procedure DoCaretChanged(OldCaret : TPoint); override;
procedure DoCaretChanged(Sender: TObject); override;
procedure DoTopLineChanged(OldTopLine : Integer); override;
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
procedure DoTextChanged(StartLine, EndLine : Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
public
constructor Create(ASynEdit: TCustomControl);
constructor Create(ASynEdit: TSynEditBase);
destructor Destroy; override;
procedure PrepareMarkupForRow(ARow: Integer); override;
@ -71,8 +71,6 @@ type
end;
implementation
uses
SynEdit;
{ TSynEditMarkupBracket }
@ -92,7 +90,7 @@ begin
(FMarkupLineHighlightInfo.Foreground <> clNone);
end;
procedure TSynEditMarkupSpecialLine.DoCaretChanged(OldCaret: TPoint);
procedure TSynEditMarkupSpecialLine.DoCaretChanged(Sender: TObject);
begin
InvalidateLineHighlight;
end;
@ -117,7 +115,7 @@ begin
InvalidateLineHighlight;
end;
constructor TSynEditMarkupSpecialLine.Create(ASynEdit: TCustomControl);
constructor TSynEditMarkupSpecialLine.Create(ASynEdit: TSynEditBase);
begin
inherited Create(ASynEdit);
@ -192,10 +190,10 @@ procedure TSynEditMarkupSpecialLine.InvalidateLineHighlight;
var
NewLine: Integer;
begin
if not HasLineHighlight then
if (not HasLineHighlight) or (Caret = nil) then
Exit;
NewLine := TSynEdit(SynEdit).CaretY;
NewLine := Caret.LinePos;
// invalidate old line highlighting, if changed
if (FHighlightedLine > 0) and (NewLine <> FHighlightedLine) then

View File

@ -49,14 +49,14 @@ type
protected
procedure FindMatchingWords(PhysCaret: TPoint;
out Word1, Word2, Word3: TWordPoint);
procedure DoCaretChanged(OldCaret : TPoint); override;
procedure DoCaretChanged(Sender: TObject); override;
procedure DoTopLineChanged(OldTopLine : Integer); override;
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
procedure DoTextChanged(StartLine, EndLine : Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure InvalidateCurrentHighlight;
public
constructor Create(ASynEdit: TCustomControl);
constructor Create(ASynEdit: TSynEditBase);
function GetMarkupAttributeAtRowCol(const aRow, aCol: Integer): TSynSelectedColor; override;
function GetNextMarkupColAfterRowCol(const aRow, aCol: Integer): Integer; override;
@ -66,8 +66,6 @@ type
end;
implementation
uses
SynEdit;
Function CompareWordPoints(P1, P2: TWordPoint): Integer;
begin
@ -89,7 +87,7 @@ end;
{ TSynEditMarkupWordGroup }
constructor TSynEditMarkupWordGroup.Create(ASynEdit : TCustomControl);
constructor TSynEditMarkupWordGroup.Create(ASynEdit : TSynEditBase);
begin
inherited Create(ASynEdit);
FHighlightPos1.Y := -1;
@ -206,7 +204,7 @@ begin
if not (FHighlighter is TSynCustomFoldHighlighter) then
exit;
hl := TSynCustomFoldHighlighter(FHighlighter);
LogCaretXY := TSynEdit(SynEdit).PhysicalToLogicalPos(PhysCaret);
LogCaretXY := Lines.PhysicalToLogicalPos(PhysCaret);
y := LogCaretXY.Y - 1;
LCnt := Lines.Count;
HL.CurrentLines := Lines;
@ -273,24 +271,25 @@ begin
end;
if Word1.Y > 0 then begin
Word1.X := TSynEdit(SynEdit).LogicalToPhysicalPos(Point(Word1.X, Word1.Y)).X;
Word1.X2 := TSynEdit(SynEdit).LogicalToPhysicalPos(Point(Word1.X2, Word1.Y)).X;
Word1.X := Lines.LogicalToPhysicalPos(Point(Word1.X, Word1.Y)).X;
Word1.X2 := Lines.LogicalToPhysicalPos(Point(Word1.X2, Word1.Y)).X;
end;
if Word2.Y > 0 then begin
Word2.X := TSynEdit(SynEdit).LogicalToPhysicalPos(Point(Word2.X, Word2.Y)).X;
Word2.X2 := TSynEdit(SynEdit).LogicalToPhysicalPos(Point(Word2.X2, Word2.Y)).X;
Word2.X := Lines.LogicalToPhysicalPos(Point(Word2.X, Word2.Y)).X;
Word2.X2 := Lines.LogicalToPhysicalPos(Point(Word2.X2, Word2.Y)).X;
end;
if Word3.Y > 0 then begin
Word3.X := TSynEdit(SynEdit).LogicalToPhysicalPos(Point(Word3.X, Word3.Y)).X;
Word3.X2 := TSynEdit(SynEdit).LogicalToPhysicalPos(Point(Word3.X2, Word3.Y)).X;
Word3.X := Lines.LogicalToPhysicalPos(Point(Word3.X, Word3.Y)).X;
Word3.X2 := Lines.LogicalToPhysicalPos(Point(Word3.X2, Word3.Y)).X;
end;
end;
procedure TSynEditMarkupWordGroup.DoCaretChanged(OldCaret: TPoint);
procedure TSynEditMarkupWordGroup.DoCaretChanged(Sender: TObject);
var
C: TPoint;
begin
C := TSynEdit(SynEdit).CaretXY;
if Caret = nil then exit;
C := Caret.LineCharPos;
if ( (C.Y = FHighlightPos1.Y) and (C.X >= FHighlightPos1.X) and (C.X <= FHighlightPos1.X2) ) or
( (C.Y = FHighlightPos2.Y) and (C.X >= FHighlightPos2.X) and (C.X <= FHighlightPos2.X2) ) or
( (C.Y = FHighlightPos3.Y) and (C.X >= FHighlightPos3.X) and (C.X <= FHighlightPos3.X2) ) then
@ -320,7 +319,8 @@ procedure TSynEditMarkupWordGroup.InvalidateCurrentHighlight;
var
NewPos, NewAntiPos, NewMiddlePos : TWordPoint;
begin
FindMatchingWords(TSynEdit(SynEdit).CaretXY, NewPos, NewAntiPos, NewMiddlePos);
if Caret = nil then exit;
FindMatchingWords(Caret.LineCharPos, NewPos, NewAntiPos, NewMiddlePos);
// invalidate old highlighting, if changed
if (FHighlightPos1.Y > 0)