mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-26 03:09:31 +02:00
SynEdit, removed a circular unit ref
git-svn-id: trunk@20684 -
This commit is contained in:
parent
516a894ca7
commit
29b5dce82a
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user