mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-04 07:00:35 +02:00
SynEdit, Markup: Defer work if SynEdit is not visible
git-svn-id: trunk@39959 -
This commit is contained in:
parent
d67ac0c78c
commit
9256d0293c
@ -780,6 +780,7 @@ type
|
||||
AnInfo: TSynEditMouseActionInfo): Boolean;
|
||||
|
||||
protected
|
||||
procedure SetVisible(Value: Boolean); override;
|
||||
procedure SetColor(Value: TColor); override;
|
||||
procedure DragOver(Source: TObject; X, Y: Integer;
|
||||
State: TDragState; var Accept: Boolean); override;
|
||||
@ -3155,6 +3156,13 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.SetVisible(Value: Boolean);
|
||||
begin
|
||||
inherited SetVisible(Value);
|
||||
if fMarkupManager <> nil then
|
||||
fMarkupManager.DoVisibleChanged(Value);
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.SetColor(Value: TColor);
|
||||
begin
|
||||
inherited SetColor(Value);
|
||||
@ -3966,7 +3974,8 @@ begin
|
||||
DoDecPaintLock(Self);
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.SetHighlightSearch(const ASearch : String; AOptions : TSynSearchOptions);
|
||||
procedure TCustomSynEdit.SetHighlightSearch(const ASearch: String;
|
||||
AOptions: TSynSearchOptions);
|
||||
begin
|
||||
fMarkupHighAll.SearchOptions := AOptions;
|
||||
fMarkupHighAll.SearchString := ASearch;
|
||||
@ -4699,8 +4708,8 @@ begin
|
||||
Done := False;
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.LineCountChanged(Sender: TSynEditStrings;
|
||||
AIndex, ACount: Integer);
|
||||
procedure TCustomSynEdit.LineCountChanged(Sender: TSynEditStrings; AIndex,
|
||||
ACount: Integer);
|
||||
begin
|
||||
{$IFDEF SynFoldDebug}debugln(['FOLD-- LineCountChanged Aindex', AIndex, ' ACount=', ACount]);{$ENDIF}
|
||||
FBlockSelection.StickyAutoExtend := False;
|
||||
@ -4735,8 +4744,8 @@ begin
|
||||
UpdateScrollBars;
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.LineTextChanged(Sender: TSynEditStrings;
|
||||
AIndex, ACount: Integer);
|
||||
procedure TCustomSynEdit.LineTextChanged(Sender: TSynEditStrings; AIndex,
|
||||
ACount: Integer);
|
||||
begin
|
||||
{$IFDEF SynFoldDebug}debugln(['FOLD-- LineTextChanged Aindex', AIndex, ' ACount=', ACount]);{$ENDIF}
|
||||
FBlockSelection.StickyAutoExtend := False;
|
||||
|
@ -79,6 +79,7 @@ type
|
||||
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); virtual;
|
||||
procedure DoTextChanged(StartLine, EndLine : Integer); virtual; // 1 based
|
||||
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); virtual;
|
||||
procedure DoVisibleChanged(AVisible: Boolean); virtual;
|
||||
|
||||
procedure InvalidateSynLines(FirstLine, LastLine: integer); // Call Synedt to invalidate lines
|
||||
function ScreenRowToRow(aRow : Integer) : Integer;
|
||||
@ -147,6 +148,7 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure IncPaintLock; override;
|
||||
procedure DecPaintLock; override;
|
||||
procedure DoVisibleChanged(AVisible: Boolean); override;
|
||||
|
||||
Procedure AddMarkUp(aMarkUp : TSynEditMarkup; AsFirst: Boolean = False);
|
||||
Procedure RemoveMarkUp(aMarkUp : TSynEditMarkup);
|
||||
@ -317,6 +319,11 @@ procedure TSynEditMarkup.DoMarkupChanged(AMarkup : TSynSelectedColor);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkup.DoVisibleChanged(AVisible: Boolean);
|
||||
begin
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkup.InvalidateSynLines(FirstLine, LastLine : integer);
|
||||
begin
|
||||
if assigned(fInvalidateLinesMethod)
|
||||
@ -371,7 +378,7 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkup.FinishMarkupForRow(aRow : Integer);
|
||||
procedure TSynEditMarkup.FinishMarkupForRow(aRow: Integer);
|
||||
begin
|
||||
end;
|
||||
|
||||
@ -415,7 +422,7 @@ begin
|
||||
dec(FPaintLock);
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkup.PrepareMarkupForRow(aRow : Integer);
|
||||
procedure TSynEditMarkup.PrepareMarkupForRow(aRow: Integer);
|
||||
begin
|
||||
end;
|
||||
|
||||
@ -456,7 +463,8 @@ begin
|
||||
TSynEditMarkup(fMarkUpList[i]).DecPaintLock;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupManager.AddMarkUp(aMarkUp : TSynEditMarkup; AsFirst: Boolean = False);
|
||||
procedure TSynEditMarkupManager.AddMarkUp(aMarkUp: TSynEditMarkup;
|
||||
AsFirst: Boolean);
|
||||
begin
|
||||
if AsFirst then
|
||||
fMarkUpList.Insert(0, aMarkUp)
|
||||
@ -486,7 +494,7 @@ begin
|
||||
Result := fMarkUpList.Count;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupManager.FinishMarkupForRow(aRow : Integer);
|
||||
procedure TSynEditMarkupManager.FinishMarkupForRow(aRow: Integer);
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
@ -504,7 +512,7 @@ begin
|
||||
TSynEditMarkup(fMarkUpList[i]).EndMarkup;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupManager.PrepareMarkupForRow(aRow : Integer);
|
||||
procedure TSynEditMarkupManager.PrepareMarkupForRow(aRow: Integer);
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
@ -527,7 +535,8 @@ begin
|
||||
end;
|
||||
|
||||
function TSynEditMarkupManager.GetMarkupAttributeAtRowCol(const aRow: Integer;
|
||||
const aStartCol: TLazSynDisplayTokenBound; const AnRtlInfo: TLazSynDisplayRtlInfo) : TSynSelectedColor;
|
||||
const aStartCol: TLazSynDisplayTokenBound;
|
||||
const AnRtlInfo: TLazSynDisplayRtlInfo): TSynSelectedColor;
|
||||
begin
|
||||
assert(false);
|
||||
Result := MarkupInfo;
|
||||
@ -575,7 +584,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupManager.TextChanged(aFirstCodeLine, aLastCodeLine: Integer);
|
||||
procedure TSynEditMarkupManager.TextChanged(aFirstCodeLine,
|
||||
aLastCodeLine: Integer);
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
@ -644,6 +654,16 @@ begin
|
||||
TSynEditMarkup(fMarkUpList[i]).SetCaret(AValue);
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupManager.DoVisibleChanged(AVisible: Boolean);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
inherited DoVisibleChanged(AVisible);
|
||||
if fMarkUpList = nil then exit;
|
||||
for i := 0 to fMarkUpList.Count-1 do
|
||||
TSynEditMarkup(fMarkUpList[i]).DoVisibleChanged(AVisible);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
@ -52,6 +52,7 @@ type
|
||||
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
|
||||
procedure DoTextChanged(StartLine, EndLine : Integer); override;
|
||||
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
|
||||
procedure DoVisibleChanged(AVisible: Boolean); override;
|
||||
public
|
||||
constructor Create(ASynEdit: TSynEditBase);
|
||||
procedure DecPaintLock; override;
|
||||
@ -172,12 +173,21 @@ begin
|
||||
InvalidateBracketHighlight;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupBracket.DoVisibleChanged(AVisible: Boolean);
|
||||
begin
|
||||
inherited DoVisibleChanged(AVisible);
|
||||
if SynEdit.IsVisible then
|
||||
InvalidateBracketHighlight;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupBracket.InvalidateBracketHighlight;
|
||||
var
|
||||
NewPos, NewAntiPos, SwapPos : TPoint;
|
||||
begin
|
||||
FNeedInvalidate := True;
|
||||
if (Caret = nil) or (not SynEdit.HandleAllocated) or (FPaintLock > 0) then
|
||||
if (Caret = nil) or (not SynEdit.HandleAllocated) or (FPaintLock > 0) or
|
||||
(not SynEdit.IsVisible)
|
||||
then
|
||||
exit;
|
||||
|
||||
FNeedInvalidate := False;
|
||||
|
@ -110,6 +110,7 @@ type
|
||||
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
|
||||
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
|
||||
procedure DoTextChanged(StartLine, EndLine: Integer); override; // 1 based
|
||||
procedure DoVisibleChanged(AVisible: Boolean); override;
|
||||
function HasVisibleMatch: Boolean; // does not check, if in visible line range. Only Count and DideSingleMatch
|
||||
property MatchCount: Integer read GetMatchCount;
|
||||
property MarkupEnabled: Boolean read FMarkupEnabled;
|
||||
@ -697,7 +698,7 @@ var
|
||||
FirstKeptValidIdx: Integer; // The first index, kept after the removed invalidated range
|
||||
p: TPoint;
|
||||
begin
|
||||
if FPaintLock > 0 then begin
|
||||
if (FPaintLock > 0) or (not SynEdit.IsVisible) then begin
|
||||
FNeedValidate := True;
|
||||
if not SkipPaint then
|
||||
FNeedValidatePaint := True;
|
||||
@ -718,7 +719,6 @@ begin
|
||||
MaybeDropOldMatches;
|
||||
FirstKeptValidIdx := DeleteInvalidMatches;
|
||||
//DebugLnEnter(['>>> ValidateMatches ', FFirstInvalidLine, ' - ',FLastInvalidLine, ' Cnt=',FMatches.Count, ' Idx: ', FirstKeptValidIdx, ' ',SynEdit.Name, ' # ',fSearchString]);
|
||||
|
||||
FindInitialize;
|
||||
|
||||
if not IsPosValid(FSearchedEnd) then
|
||||
@ -841,14 +841,21 @@ begin
|
||||
InvalidateLines(StartLine, MaxInt); // EndLine); // Might be LineCount changed
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupHighlightAll.DoVisibleChanged(AVisible: Boolean);
|
||||
begin
|
||||
inherited DoVisibleChanged(AVisible);
|
||||
if FNeedValidate and SynEdit.IsVisible then
|
||||
ValidateMatches(True);
|
||||
end;
|
||||
|
||||
function TSynEditMarkupHighlightAll.HasVisibleMatch: Boolean;
|
||||
begin
|
||||
Result := ( HideSingleMatch and (FMatches.Count > 1) ) or
|
||||
( (not HideSingleMatch) and (FMatches.Count > 0) );
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupHighlightAll.InvalidateLines(AFirstLine: Integer; ALastLine: Integer;
|
||||
SkipPaint: Boolean);
|
||||
procedure TSynEditMarkupHighlightAll.InvalidateLines(AFirstLine: Integer;
|
||||
ALastLine: Integer; SkipPaint: Boolean);
|
||||
begin
|
||||
if AFirstLine < 1 then
|
||||
AFirstLine := 1;
|
||||
|
@ -56,6 +56,7 @@ type
|
||||
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
|
||||
procedure DoTextChanged(StartLine, EndLine : Integer); override;
|
||||
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
|
||||
procedure DoVisibleChanged(AVisible: Boolean); override;
|
||||
procedure InvalidateCurrentHighlight;
|
||||
public
|
||||
constructor Create(ASynEdit: TSynEditBase);
|
||||
@ -329,12 +330,21 @@ begin
|
||||
InvalidateCurrentHighlight;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupWordGroup.DoVisibleChanged(AVisible: Boolean);
|
||||
begin
|
||||
inherited DoVisibleChanged(AVisible);
|
||||
if SynEdit.IsVisible then
|
||||
InvalidateCurrentHighlight;
|
||||
end;
|
||||
|
||||
procedure TSynEditMarkupWordGroup.InvalidateCurrentHighlight;
|
||||
var
|
||||
NewPos, NewAntiPos, NewMiddlePos : TWordPoint;
|
||||
begin
|
||||
FNeedInvalidate := True;
|
||||
if (Caret = nil) or (not SynEdit.HandleAllocated) or (FPaintLock > 0) then
|
||||
if (Caret = nil) or (not SynEdit.HandleAllocated) or (FPaintLock > 0) or
|
||||
(not SynEdit.IsVisible)
|
||||
then
|
||||
exit;
|
||||
|
||||
FNeedInvalidate := False;
|
||||
|
Loading…
Reference in New Issue
Block a user