mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 17:59:22 +02:00
SynEdit: remove circular dependency between SynEdit and SynGutterLineOverview
git-svn-id: trunk@64489 -
This commit is contained in:
parent
0060c09037
commit
34386c9031
@ -589,7 +589,6 @@ type
|
|||||||
function GetFoldedCodeLineColor: TSynSelectedColor;
|
function GetFoldedCodeLineColor: TSynSelectedColor;
|
||||||
function GetFoldState: String;
|
function GetFoldState: String;
|
||||||
function GetHiddenCodeLineColor: TSynSelectedColor;
|
function GetHiddenCodeLineColor: TSynSelectedColor;
|
||||||
function GetModified: Boolean;
|
|
||||||
function GetPaintLockOwner: TSynEditBase;
|
function GetPaintLockOwner: TSynEditBase;
|
||||||
function GetPlugin(Index: Integer): TLazSynEditPlugin;
|
function GetPlugin(Index: Integer): TLazSynEditPlugin;
|
||||||
function GetRightEdge: Integer;
|
function GetRightEdge: Integer;
|
||||||
@ -678,7 +677,6 @@ type
|
|||||||
procedure SetLineText(Value: string);
|
procedure SetLineText(Value: string);
|
||||||
procedure SetMaxLeftChar(Value: integer);
|
procedure SetMaxLeftChar(Value: integer);
|
||||||
procedure SetMaxUndo(const Value: Integer);
|
procedure SetMaxUndo(const Value: Integer);
|
||||||
procedure SetModified(Value: boolean);
|
|
||||||
procedure UpdateOptions;
|
procedure UpdateOptions;
|
||||||
procedure UpdateOptions2;
|
procedure UpdateOptions2;
|
||||||
procedure UpdateMouseOptions;
|
procedure UpdateMouseOptions;
|
||||||
@ -823,6 +821,7 @@ type
|
|||||||
function RealGetText: TCaption; override;
|
function RealGetText: TCaption; override;
|
||||||
procedure RealSetText(const Value: TCaption); override;
|
procedure RealSetText(const Value: TCaption); override;
|
||||||
function GetLines: TStrings; override;
|
function GetLines: TStrings; override;
|
||||||
|
function GetModified: Boolean; override;
|
||||||
function GetViewedTextBuffer: TSynEditStringsLinked; override;
|
function GetViewedTextBuffer: TSynEditStringsLinked; override;
|
||||||
function GetFoldedTextBuffer: TObject; override;
|
function GetFoldedTextBuffer: TObject; override;
|
||||||
function GetTextBuffer: TSynEditStrings; override;
|
function GetTextBuffer: TSynEditStrings; override;
|
||||||
@ -853,6 +852,7 @@ type
|
|||||||
procedure RecalcCharExtent;
|
procedure RecalcCharExtent;
|
||||||
procedure RedoItem(Item: TSynEditUndoItem);
|
procedure RedoItem(Item: TSynEditUndoItem);
|
||||||
procedure CaretChanged(Sender: TObject);
|
procedure CaretChanged(Sender: TObject);
|
||||||
|
procedure SetModified(Value: boolean); override;
|
||||||
procedure SetMouseOptions(AValue: TSynEditorMouseOptions); override;
|
procedure SetMouseOptions(AValue: TSynEditorMouseOptions); override;
|
||||||
procedure SetName(const Value: TComponentName); override;
|
procedure SetName(const Value: TComponentName); override;
|
||||||
procedure SetOptions(Value: TSynEditorOptions); override;
|
procedure SetOptions(Value: TSynEditorOptions); override;
|
||||||
@ -1108,7 +1108,6 @@ type
|
|||||||
property ScrollOnEditRightOptions: TSynScrollOnEditOptions read FScrollOnEditRightOptions write SetScrollOnEditRightOptions;
|
property ScrollOnEditRightOptions: TSynScrollOnEditOptions read FScrollOnEditRightOptions write SetScrollOnEditRightOptions;
|
||||||
|
|
||||||
property UseIncrementalColor : Boolean write SetUseIncrementalColor;
|
property UseIncrementalColor : Boolean write SetUseIncrementalColor;
|
||||||
property Modified: Boolean read GetModified write SetModified;
|
|
||||||
property PaintLock: Integer read fPaintLock;
|
property PaintLock: Integer read fPaintLock;
|
||||||
|
|
||||||
property UseUTF8: boolean read FUseUTF8;
|
property UseUTF8: boolean read FUseUTF8;
|
||||||
|
@ -153,6 +153,7 @@ type
|
|||||||
function GetCanRedo: boolean; virtual; abstract;
|
function GetCanRedo: boolean; virtual; abstract;
|
||||||
function GetCanUndo: boolean; virtual; abstract;
|
function GetCanUndo: boolean; virtual; abstract;
|
||||||
function GetCaretObj: TSynEditCaret; virtual; abstract;
|
function GetCaretObj: TSynEditCaret; virtual; abstract;
|
||||||
|
function GetModified: Boolean; virtual; abstract;
|
||||||
function GetReadOnly: boolean; virtual;
|
function GetReadOnly: boolean; virtual;
|
||||||
function GetIsBackwardSel: Boolean;
|
function GetIsBackwardSel: Boolean;
|
||||||
function GetHighlighterObj: TObject; virtual; abstract;
|
function GetHighlighterObj: TObject; virtual; abstract;
|
||||||
@ -166,6 +167,7 @@ type
|
|||||||
function GetFoldedTextBuffer: TObject; virtual; abstract;
|
function GetFoldedTextBuffer: TObject; virtual; abstract;
|
||||||
function GetTextBuffer: TSynEditStrings; virtual; abstract;
|
function GetTextBuffer: TSynEditStrings; virtual; abstract;
|
||||||
function GetPaintArea: TLazSynSurface; virtual; abstract; // TLazSynSurfaceManager
|
function GetPaintArea: TLazSynSurface; virtual; abstract; // TLazSynSurfaceManager
|
||||||
|
procedure SetModified(Value: boolean); virtual; abstract;
|
||||||
procedure SetMouseOptions(AValue: TSynEditorMouseOptions); virtual;
|
procedure SetMouseOptions(AValue: TSynEditorMouseOptions); virtual;
|
||||||
procedure SetReadOnly(Value: boolean); virtual;
|
procedure SetReadOnly(Value: boolean); virtual;
|
||||||
procedure StatusChanged(AChanges: TSynStatusChanges); virtual; abstract;
|
procedure StatusChanged(AChanges: TSynStatusChanges); virtual; abstract;
|
||||||
@ -326,6 +328,7 @@ type
|
|||||||
property Options: TSynEditorOptions read FOptions write SetOptions default SYNEDIT_DEFAULT_OPTIONS;
|
property Options: TSynEditorOptions read FOptions write SetOptions default SYNEDIT_DEFAULT_OPTIONS;
|
||||||
property Options2: TSynEditorOptions2 read FOptions2 write SetOptions2 default SYNEDIT_DEFAULT_OPTIONS2;
|
property Options2: TSynEditorOptions2 read FOptions2 write SetOptions2 default SYNEDIT_DEFAULT_OPTIONS2;
|
||||||
property ReadOnly: Boolean read GetReadOnly write SetReadOnly default FALSE;
|
property ReadOnly: Boolean read GetReadOnly write SetReadOnly default FALSE;
|
||||||
|
property Modified: Boolean read GetModified write SetModified;
|
||||||
|
|
||||||
property CaretX: Integer read GetCaretX write SetCaretX;
|
property CaretX: Integer read GetCaretX write SetCaretX;
|
||||||
property CaretY: Integer read GetCaretY write SetCaretY;
|
property CaretY: Integer read GetCaretY write SetCaretY;
|
||||||
|
@ -336,8 +336,6 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
uses
|
|
||||||
SynEdit;
|
|
||||||
|
|
||||||
{ TSynGutterLOvMark }
|
{ TSynGutterLOvMark }
|
||||||
|
|
||||||
@ -963,8 +961,8 @@ procedure TSynGutterLOvProviderCurrentPage.SynStatusChanged(Sender: TObject;
|
|||||||
Changes: TSynStatusChanges);
|
Changes: TSynStatusChanges);
|
||||||
begin
|
begin
|
||||||
InvalidatePixelLines(FPixelTopLine, FPixelBottomLine);
|
InvalidatePixelLines(FPixelTopLine, FPixelBottomLine);
|
||||||
FCurTopLine := TCustomSynEdit(SynEdit).TopLine;
|
FCurTopLine := SynEdit.TopLine;
|
||||||
FCurBottomLine := TCustomSynEdit(SynEdit).ScreenRowToRow(TCustomSynEdit(SynEdit).LinesInWindow);
|
FCurBottomLine := SynEdit.ScreenXYToTextXY(Point(0, SynEdit.LinesInWindow)).Y;
|
||||||
ReCalc;
|
ReCalc;
|
||||||
InvalidatePixelLines(FPixelTopLine, FPixelBottomLine);
|
InvalidatePixelLines(FPixelTopLine, FPixelBottomLine);
|
||||||
end;
|
end;
|
||||||
@ -995,13 +993,13 @@ begin
|
|||||||
FColor := 0;
|
FColor := 0;
|
||||||
Color := $C0C0C0;
|
Color := $C0C0C0;
|
||||||
ViewedTextBuffer.AddChangeHandler(senrLineMappingChanged, @FoldChanged);
|
ViewedTextBuffer.AddChangeHandler(senrLineMappingChanged, @FoldChanged);
|
||||||
TCustomSynEdit(SynEdit).RegisterStatusChangedHandler(@SynStatusChanged,
|
SynEdit.RegisterStatusChangedHandler(@SynStatusChanged,
|
||||||
[scTopLine, scLinesInWindow]);
|
[scTopLine, scLinesInWindow]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TSynGutterLOvProviderCurrentPage.Destroy;
|
destructor TSynGutterLOvProviderCurrentPage.Destroy;
|
||||||
begin
|
begin
|
||||||
TCustomSynEdit(SynEdit).UnRegisterStatusChangedHandler(@SynStatusChanged);
|
SynEdit.UnRegisterStatusChangedHandler(@SynStatusChanged);
|
||||||
ViewedTextBuffer.AddChangeHandler(senrLineMappingChanged, @FoldChanged);
|
ViewedTextBuffer.AddChangeHandler(senrLineMappingChanged, @FoldChanged);
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
@ -1110,7 +1108,7 @@ end;
|
|||||||
procedure TSynGutterLOvProviderModifiedLines.SynStatusChanged(Sender: TObject;
|
procedure TSynGutterLOvProviderModifiedLines.SynStatusChanged(Sender: TObject;
|
||||||
Changes: TSynStatusChanges);
|
Changes: TSynStatusChanges);
|
||||||
begin
|
begin
|
||||||
if (scModified in Changes) and not TCustomSynEdit(SynEdit).Modified then begin;
|
if (scModified in Changes) and not SynEdit.Modified then begin;
|
||||||
FFirstTextLineChanged := 1;
|
FFirstTextLineChanged := 1;
|
||||||
FLastTextLineChanged := 0; // open end
|
FLastTextLineChanged := 0; // open end
|
||||||
InvalidateTextLines(FFirstTextLineChanged, TextBuffer.Count);
|
InvalidateTextLines(FFirstTextLineChanged, TextBuffer.Count);
|
||||||
@ -1121,7 +1119,7 @@ constructor TSynGutterLOvProviderModifiedLines.Create(AOwner: TComponent);
|
|||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
ViewedTextBuffer.AddModifiedHandler(senrLinesModified, @LineModified);
|
ViewedTextBuffer.AddModifiedHandler(senrLinesModified, @LineModified);
|
||||||
TCustomSynEdit(SynEdit).RegisterStatusChangedHandler(@SynStatusChanged, [scModified]);
|
SynEdit.RegisterStatusChangedHandler(@SynStatusChanged, [scModified]);
|
||||||
FFirstTextLineChanged := -1;
|
FFirstTextLineChanged := -1;
|
||||||
FLastTextLineChanged := -1;
|
FLastTextLineChanged := -1;
|
||||||
Color := clYellow;
|
Color := clYellow;
|
||||||
@ -1131,7 +1129,7 @@ end;
|
|||||||
destructor TSynGutterLOvProviderModifiedLines.Destroy;
|
destructor TSynGutterLOvProviderModifiedLines.Destroy;
|
||||||
begin
|
begin
|
||||||
ViewedTextBuffer.RemoveHanlders(self);
|
ViewedTextBuffer.RemoveHanlders(self);
|
||||||
TCustomSynEdit(SynEdit).UnRegisterStatusChangedHandler(@SynStatusChanged);
|
SynEdit.UnRegisterStatusChangedHandler(@SynStatusChanged);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1223,14 +1221,16 @@ end;
|
|||||||
|
|
||||||
procedure TSynGutterLOvProviderBookmarks.BufferChanging(Sender: TObject);
|
procedure TSynGutterLOvProviderBookmarks.BufferChanging(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
TCustomSynEdit(SynEdit).Marks.UnRegisterChangeHandler(@DoMarkChange);
|
(SynEdit.Marks as TSynEditMarkList).UnRegisterChangeHandler(@DoMarkChange);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSynGutterLOvProviderBookmarks.BufferChanged(Sender: TObject);
|
procedure TSynGutterLOvProviderBookmarks.BufferChanged(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
LMarks: TSynEditMarkList;
|
||||||
begin
|
begin
|
||||||
TCustomSynEdit(SynEdit).Marks.RegisterChangeHandler(@DoMarkChange,
|
LMarks := (SynEdit.Marks as TSynEditMarkList);
|
||||||
|
LMarks.RegisterChangeHandler(@DoMarkChange,
|
||||||
[smcrAdded, smcrRemoved, smcrLine, smcrVisible, smcrChanged]);
|
[smcrAdded, smcrRemoved, smcrLine, smcrVisible, smcrChanged]);
|
||||||
|
|
||||||
while FMarkList.Count > 0 do begin
|
while FMarkList.Count > 0 do begin
|
||||||
@ -1238,32 +1238,34 @@ begin
|
|||||||
FMarkList.Delete(0);
|
FMarkList.Delete(0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
for i := 0 to TCustomSynEdit(SynEdit).Marks.Count - 1 do
|
for i := 0 to LMarks.Count - 1 do
|
||||||
if TCustomSynEdit(SynEdit).Marks[i].Visible then
|
if LMarks[i].Visible then
|
||||||
CreateGutterMark(TCustomSynEdit(SynEdit).Marks[i]);
|
CreateGutterMark(LMarks[i]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TSynGutterLOvProviderBookmarks.Create(AOwner: TComponent);
|
constructor TSynGutterLOvProviderBookmarks.Create(AOwner: TComponent);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
LMarks: TSynEditMarkList;
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
Color := clBlue;
|
Color := clBlue;
|
||||||
ViewedTextBuffer.AddNotifyHandler(senrTextBufferChanging, @BufferChanging);
|
ViewedTextBuffer.AddNotifyHandler(senrTextBufferChanging, @BufferChanging);
|
||||||
ViewedTextBuffer.AddNotifyHandler(senrTextBufferChanged, @BufferChanged);
|
ViewedTextBuffer.AddNotifyHandler(senrTextBufferChanged, @BufferChanged);
|
||||||
|
|
||||||
TCustomSynEdit(SynEdit).Marks.RegisterChangeHandler(@DoMarkChange,
|
LMarks := (SynEdit.Marks as TSynEditMarkList);
|
||||||
|
LMarks.RegisterChangeHandler(@DoMarkChange,
|
||||||
[smcrAdded, smcrRemoved, smcrLine, smcrVisible, smcrChanged]);
|
[smcrAdded, smcrRemoved, smcrLine, smcrVisible, smcrChanged]);
|
||||||
|
|
||||||
for i := 0 to TCustomSynEdit(SynEdit).Marks.Count - 1 do
|
for i := 0 to LMarks.Count - 1 do
|
||||||
if TCustomSynEdit(SynEdit).Marks[i].Visible then
|
if LMarks[i].Visible then
|
||||||
CreateGutterMark(TCustomSynEdit(SynEdit).Marks[i]);
|
CreateGutterMark(LMarks[i]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TSynGutterLOvProviderBookmarks.Destroy;
|
destructor TSynGutterLOvProviderBookmarks.Destroy;
|
||||||
begin
|
begin
|
||||||
ViewedTextBuffer.RemoveHanlders(self);
|
ViewedTextBuffer.RemoveHanlders(self);
|
||||||
TCustomSynEdit(SynEdit).Marks.UnRegisterChangeHandler(@DoMarkChange);
|
(SynEdit.Marks as TSynEditMarkList).UnRegisterChangeHandler(@DoMarkChange);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1538,7 +1540,7 @@ function TSynGutterLineOverview.MaybeHandleMouseAction(
|
|||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
if FLineMarks.IndexForLine(AnInfo.MouseY, False, True) >= 0 then
|
if FLineMarks.IndexForLine(AnInfo.MouseY, False, True) >= 0 then
|
||||||
Result := HandleActionProc(FMouseActionsForMarks.GetActionsForOptions(TCustomSynEdit(SynEdit).MouseOptions), AnInfo);
|
Result := HandleActionProc(FMouseActionsForMarks.GetActionsForOptions(SynEdit.MouseOptions), AnInfo);
|
||||||
|
|
||||||
if not Result then
|
if not Result then
|
||||||
Result := inherited MaybeHandleMouseAction(AnInfo, HandleActionProc);
|
Result := inherited MaybeHandleMouseAction(AnInfo, HandleActionProc);
|
||||||
@ -1570,10 +1572,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if Result then begin
|
if Result then begin
|
||||||
if (TextLine < TCustomSynEdit(SynEdit).TopLine) or
|
if (TextLine < SynEdit.TopLine) or
|
||||||
(TextLine > TCustomSynEdit(SynEdit).TopLine + TCustomSynEdit(SynEdit).LinesInWindow)
|
(TextLine > SynEdit.TopLine + SynEdit.LinesInWindow)
|
||||||
then
|
then
|
||||||
TCustomSynEdit(SynEdit).TopLine := Max(1, TextLine - TCustomSynEdit(SynEdit).LinesInWindow div 2);
|
SynEdit.TopLine := Max(1, TextLine - SynEdit.LinesInWindow div 2);
|
||||||
|
|
||||||
AnInfo.NewCaret.LinePos := TextLine;
|
AnInfo.NewCaret.LinePos := TextLine;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user