mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-28 05:29:21 +02:00
reduced synedit overhead changing highlighter line attribute Range
git-svn-id: trunk@8273 -
This commit is contained in:
parent
0efcb8e4e5
commit
86d67dc36e
@ -787,9 +787,9 @@ begin
|
||||
Add('NOT',{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||
Add('OBJECT',{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||
Add('OF',{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||
Add('OPERATOR',{$ifdef FPC}@{$endif}AllwaysTrue); // not for Delphi
|
||||
//Add('OPERATOR',{$ifdef FPC}@{$endif}AllwaysTrue); // not for Delphi
|
||||
//Add('ON',{$ifdef FPC}@{$endif}AllwaysTrue); // not for Delphi
|
||||
Add('OUT',{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||
//Add('OUT',{$ifdef FPC}@{$endif}AllwaysTrue); // not in MacPas mode
|
||||
Add('OR',{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||
Add('PACKED',{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||
Add('PROCEDURE',{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||
|
@ -1442,10 +1442,7 @@ end;
|
||||
|
||||
procedure TCustomSynEdit.DecPaintLock;
|
||||
var
|
||||
BB: TPoint;
|
||||
BE: TPoint;
|
||||
OrgCaretPos: TPoint;
|
||||
OldTopLine: LongInt;
|
||||
LastLineChanged: LongInt;
|
||||
begin
|
||||
if (fPaintLock=1) and HandleAllocated then begin
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
@ -1454,24 +1451,16 @@ begin
|
||||
if fHighlighterNeedsUpdateStartLine<=Lines.Count then begin
|
||||
if fHighlighterNeedsUpdateEndLine>Lines.Count then
|
||||
fHighlighterNeedsUpdateEndLine:=Lines.Count;
|
||||
LastLineChanged:=fHighlighterNeedsUpdateEndLine;
|
||||
if Assigned(fHighlighter) then begin
|
||||
// store current selection detail
|
||||
BB := BlockBegin;
|
||||
BE := BlockEnd;
|
||||
OrgCaretPos := CaretXY;
|
||||
OldTopLine := TopLine;
|
||||
|
||||
// rescan all lines in range
|
||||
fHighlighter.SetRange(
|
||||
TSynEditStringList(Lines).Ranges[fHighlighterNeedsUpdateStartLine-1]);
|
||||
ScanFrom(fHighlighterNeedsUpdateStartLine-1,fHighlighterNeedsUpdateEndLine-1);
|
||||
|
||||
// restore selection
|
||||
SetCaretAndSelection(OrgCaretPos, BB, BE);
|
||||
TopLine:=OldTopLine;
|
||||
LastLineChanged:=ScanFrom(fHighlighterNeedsUpdateStartLine-1,
|
||||
fHighlighterNeedsUpdateEndLine-1);
|
||||
//DebugLn('TCustomSynEdit.DecPaintLock ',dbgs(fHighlighterNeedsUpdateStartLine),'-',dbgs(fHighlighterNeedsUpdateEndLine),' LastLineChanged=',dbgs(LastLineChanged));
|
||||
end;
|
||||
InvalidateLines(fHighlighterNeedsUpdateStartLine + 1,
|
||||
fHighlighterNeedsUpdateEndLine + 1);
|
||||
InvalidateLines(fHighlighterNeedsUpdateStartLine,LastLineChanged+1);
|
||||
end;
|
||||
fHighlighterNeedsUpdateStartLine:=0;
|
||||
fHighlighterNeedsUpdateEndLine:=0;
|
||||
@ -3906,6 +3895,7 @@ var
|
||||
ypos : integer;
|
||||
begin
|
||||
CurLine:=-1;
|
||||
//DebugLn('TCustomSynEdit.PaintTextLines ',DbgSName(Self),' TopLine=',dbgs(TopLine));
|
||||
colEditorBG := Color;
|
||||
if Assigned(Highlighter) and Assigned(Highlighter.WhitespaceAttribute) then
|
||||
begin
|
||||
@ -5940,13 +5930,13 @@ procedure TCustomSynEdit.ListPutted(Index: Integer);
|
||||
begin
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
if PaintLock>0 then begin
|
||||
{if (fHighlighterNeedsUpdateStartLine<1)
|
||||
or (fHighlighterNeedsUpdateStartLine>Index) then
|
||||
fHighlighterNeedsUpdateStartLine:=Index;
|
||||
if (fHighlighterNeedsUpdateStartLine<1)
|
||||
or (fHighlighterNeedsUpdateStartLine>Index+1) then
|
||||
fHighlighterNeedsUpdateStartLine:=Index+1;
|
||||
if (fHighlighterNeedsUpdateEndLine<1)
|
||||
or (fHighlighterNeedsUpdateEndLine<Index) then
|
||||
fHighlighterNeedsUpdateEndLine:=Index;
|
||||
exit;}
|
||||
or (fHighlighterNeedsUpdateEndLine<Index+1) then
|
||||
fHighlighterNeedsUpdateEndLine:=Index+1;
|
||||
exit;
|
||||
end;
|
||||
{$ENDIF}
|
||||
if Assigned(fHighlighter) then begin
|
||||
|
@ -986,6 +986,9 @@ procedure TSynEditStringList.PutObject(Index: integer; AObject: TObject);
|
||||
begin
|
||||
if (Index < 0) or (Index >= fCount) then
|
||||
ListIndexOutOfBounds(Index);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
if fList^[Index].fObject = AObject then exit;
|
||||
{$ENDIF}
|
||||
BeginUpdate;
|
||||
fList^[Index].fObject := AObject;
|
||||
EndUpdate;
|
||||
@ -995,9 +998,15 @@ procedure TSynEditStringList.PutRange(Index: integer; ARange: TSynEditRange);
|
||||
begin
|
||||
if (Index < 0) or (Index >= fCount) then
|
||||
ListIndexOutOfBounds(Index);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
// do not call BeginUpdate/EndUpdate. It would call the too generic OnChange
|
||||
// events
|
||||
fList^[Index].fRange := ARange;
|
||||
{$ELSE}
|
||||
BeginUpdate;
|
||||
fList^[Index].fRange := ARange;
|
||||
EndUpdate;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSynEditStringList.SaveToFile(const FileName: string);
|
||||
|
Loading…
Reference in New Issue
Block a user