* fix bug report 2205

This commit is contained in:
pierre 2002-12-18 16:10:01 +00:00
parent 88e2117b95
commit d79fd9f918

View File

@ -120,7 +120,8 @@ type
function GetUndoActionCount: sw_integer; virtual; function GetUndoActionCount: sw_integer; virtual;
function GetRedoActionCount: sw_integer; virtual; function GetRedoActionCount: sw_integer; virtual;
private private
OnDiskLoadTime : longint; OnDiskLoadTime : cardinal;
SystemLoadTime : cardinal;
procedure LinesInsert(Idx: sw_integer; Line: PLine); procedure LinesInsert(Idx: sw_integer; Line: PLine);
end; end;
@ -378,7 +379,8 @@ begin
New(Lines, Init(500,1000)); New(Lines, Init(500,1000));
TabSize:=DefaultTabSize; TabSize:=DefaultTabSize;
IndentSize:=DefaultIndentSize; IndentSize:=DefaultIndentSize;
OnDiskLoadTime:=-1; OnDiskLoadTime:=0;
SystemLoadTime:=0;
end; end;
procedure TCodeEditorCore.ChangeLinesTo(ALines : PLineCollection); procedure TCodeEditorCore.ChangeLinesTo(ALines : PLineCollection);
@ -1431,7 +1433,7 @@ begin
(Core^.UndoList^.At(0)^.Action=eaMoveCursor)) then (Core^.UndoList^.At(0)^.Action=eaMoveCursor)) then
begin begin
SetCmdState(UndoCmd,false); SetCmdState(UndoCmd,false);
if (UndoTime>Core^.OnDiskLoadTime) or (Core^.OnDiskLoadTime=-1) then if (UndoTime>=Core^.SystemLoadTime) or (Core^.SystemLoadTime=0) then
SetModified(false); SetModified(false);
end; end;
SetCmdState(RedoCmd,true); SetCmdState(RedoCmd,true);
@ -1779,20 +1781,22 @@ begin
longint(PA[2]):=Core^.GetChangedLine; longint(PA[2]):=Core^.GetChangedLine;
EditorDialog(edChangedOnloading,@PA); EditorDialog(edChangedOnloading,@PA);
end; end;
Core^.OnDiskLoadTime:=GetFileTime(FileName); Core^.OnDiskLoadTime:=Cardinal(GetFileTime(FileName));
Core^.SystemLoadTime:=Core^.OnDiskLoadTime;
LoadFile:=OK; LoadFile:=OK;
end; end;
function TFileEditor.IsChangedOnDisk : boolean; function TFileEditor.IsChangedOnDisk : boolean;
begin begin
IsChangedOnDisk:=(Core^.OnDiskLoadTime<>GetFileTime(FileName)) and IsChangedOnDisk:=(Core^.OnDiskLoadTime<>GetFileTime(FileName)) and
(Core^.OnDiskLoadTime<>-1); (Core^.OnDiskLoadTime<>0);
end; end;
function TFileEditor.SaveFile: boolean; function TFileEditor.SaveFile: boolean;
var OK: boolean; var OK: boolean;
BAKName: string; BAKName: string;
f: text; f: text;
SaveTime : cardinal;
begin begin
If IsChangedOnDisk then If IsChangedOnDisk then
begin begin
@ -1814,6 +1818,7 @@ begin
EatIO; EatIO;
end; end;
{$I+} {$I+}
SaveTime:=cardinal(now);
OK:=SaveToFile(FileName); OK:=SaveToFile(FileName);
if OK then if OK then
SetModified(false) SetModified(false)
@ -1828,7 +1833,10 @@ begin
end; end;
{ don't forget to update the OnDiskLoadTime value } { don't forget to update the OnDiskLoadTime value }
if OK then if OK then
Core^.OnDiskLoadTime:=GetFileTime(FileName); begin
Core^.OnDiskLoadTime:=GetFileTime(FileName);
Core^.SystemLoadTime:=SaveTime;
end;
if not OK then if not OK then
EditorDialog(edSaveError,@FileName); EditorDialog(edSaveError,@FileName);
SaveFile:=OK; SaveFile:=OK;
@ -1864,6 +1872,7 @@ begin
ClearUndoList; ClearUndoList;
{ don't forget to update the OnDiskLoadTime value } { don't forget to update the OnDiskLoadTime value }
Core^.OnDiskLoadTime:=GetFileTime(FileName); Core^.OnDiskLoadTime:=GetFileTime(FileName);
Core^.SystemLoadTime:=Core^.OnDiskLoadTime;
DrawView; DrawView;
end end
else else
@ -1899,7 +1908,7 @@ begin
FileName:=FExpand(FileName); FileName:=FExpand(FileName);
Message(Owner, evBroadcast, cmUpdateTitle, @Self); Message(Owner, evBroadcast, cmUpdateTitle, @Self);
{ if we rename the file the OnDiskLoadTime is wrong so we reset it } { if we rename the file the OnDiskLoadTime is wrong so we reset it }
Core^.OnDiskLoadTime:=-1; Core^.OnDiskLoadTime:=0;
if SaveFile then if SaveFile then
begin begin
SaveAs := true; SaveAs := true;
@ -2062,7 +2071,10 @@ end;
END. END.
{ {
$Log$ $Log$
Revision 1.16 2002-12-16 15:14:44 pierre Revision 1.17 2002-12-18 16:10:01 pierre
* fix bug report 2205
Revision 1.16 2002/12/16 15:14:44 pierre
* moved OnDiskLoadTime to Core * moved OnDiskLoadTime to Core
Revision 1.15 2002/09/12 22:09:07 pierre Revision 1.15 2002/09/12 22:09:07 pierre