reduced synedit overhead changing highlighter line attribute Range

git-svn-id: trunk@8273 -
This commit is contained in:
mattias 2005-12-08 10:17:35 +00:00
parent 0efcb8e4e5
commit 86d67dc36e
3 changed files with 24 additions and 25 deletions

View File

@ -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);

View File

@ -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

View File

@ -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);