IDE: fixed saving environment on every change

git-svn-id: trunk@36574 -
This commit is contained in:
mattias 2012-04-05 09:30:26 +00:00
parent 6f022b3bae
commit cea599f60f
4 changed files with 18 additions and 9 deletions

View File

@ -1355,7 +1355,6 @@ var
CurLazDir: String; CurLazDir: String;
BaseDir: String; BaseDir: String;
begin begin
//DumpStack;
Cfg:=nil; Cfg:=nil;
try try
XMLConfig:=GetXMLCfg(true); XMLConfig:=GetXMLCfg(true);

View File

@ -645,6 +645,7 @@ type
FApplicationIsActivate: boolean; FApplicationIsActivate: boolean;
FCheckingFilesOnDisk: boolean; FCheckingFilesOnDisk: boolean;
FCheckFilesOnDiskNeeded: boolean; FCheckFilesOnDiskNeeded: boolean;
fNeedSaveEnvironment: boolean;
FRemoteControlTimer: TTimer; FRemoteControlTimer: TTimer;
FRemoteControlFileAge: integer; FRemoteControlFileAge: integer;
@ -1105,7 +1106,7 @@ type
procedure DoToggleViewIDESpeedButtons; procedure DoToggleViewIDESpeedButtons;
// editor and environment options // editor and environment options
procedure SaveEnvironment; override; procedure SaveEnvironment(Immediately: boolean = false); override;
procedure LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); procedure LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions);
procedure SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); procedure SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions);
end; end;
@ -1899,7 +1900,7 @@ procedure TMainIDE.MainIDEFormClose(Sender: TObject;
var CloseAction: TCloseAction); var CloseAction: TCloseAction);
begin begin
DoCallNotifyHandler(lihtIDEClose); DoCallNotifyHandler(lihtIDEClose);
SaveEnvironment; SaveEnvironment(true);
if IDEDockMaster<>nil then if IDEDockMaster<>nil then
IDEDockMaster.CloseAll IDEDockMaster.CloseAll
else else
@ -4610,8 +4611,7 @@ begin
if ShowExtToolDialog(ExternalTools,GlobalMacroList)=mrOk then if ShowExtToolDialog(ExternalTools,GlobalMacroList)=mrOk then
begin begin
// save to environment options // save to environment options
SaveDesktopSettings(EnvironmentOptions); SaveEnvironment(true);
EnvironmentOptions.Save(false);
// save shortcuts to editor options // save shortcuts to editor options
ExternalTools.SaveShortCuts(EditorOpts.KeyMap); ExternalTools.SaveShortCuts(EditorOpts.KeyMap);
EditorOpts.Save; EditorOpts.Save;
@ -5289,8 +5289,14 @@ begin
ShowEditorFileManagerForm; ShowEditorFileManagerForm;
end; end;
procedure TMainIDE.SaveEnvironment; procedure TMainIDE.SaveEnvironment(Immediately: boolean);
begin begin
if not Immediately then
begin
fNeedSaveEnvironment:=true;
exit;
end;
fNeedSaveEnvironment:=false;
SaveDesktopSettings(EnvironmentOptions); SaveDesktopSettings(EnvironmentOptions);
EnvironmentOptions.Save(false); EnvironmentOptions.Save(false);
//debugln('TMainIDE.SaveEnvironment A ',dbgsName(ObjectInspector1.Favourites)); //debugln('TMainIDE.SaveEnvironment A ',dbgsName(ObjectInspector1.Favourites));
@ -8640,7 +8646,7 @@ function TMainIDE.DoCompleteLoadingProjectInfo: TModalResult;
begin begin
UpdateCaption; UpdateCaption;
EnvironmentOptions.LastSavedProjectFile:=Project1.ProjectInfoFile; EnvironmentOptions.LastSavedProjectFile:=Project1.ProjectInfoFile;
EnvironmentOptions.Save(false); SaveEnvironment;
MainBuildBoss.SetBuildTargetProject1(false); MainBuildBoss.SetBuildTargetProject1(false);
@ -12308,7 +12314,7 @@ begin
if CurResult=mrAbort then exit(mrAbort); if CurResult=mrAbort then exit(mrAbort);
if CurResult<>mrOk then Result:=mrCancel; if CurResult<>mrOk then Result:=mrCancel;
CurResult:=DoSaveProject(Flags); CurResult:=DoSaveProject(Flags);
SaveEnvironment; SaveEnvironment(true);
SaveIncludeLinks; SaveIncludeLinks;
PkgBoss.SaveSettings; PkgBoss.SaveSettings;
InputHistories.Save; InputHistories.Save;
@ -17487,6 +17493,9 @@ begin
{$ENDIF} {$ENDIF}
UpdateHighlighters(true); UpdateHighlighters(true);
end; end;
if fNeedSaveEnvironment then
SaveEnvironment(true);
GetDefaultProcessList.FreeStoppedProcesses; GetDefaultProcessList.FreeStoppedProcesses;
ExternalTools.FreeStoppedProcesses; ExternalTools.FreeStoppedProcesses;
if (SplashForm<>nil) then FreeThenNil(SplashForm); if (SplashForm<>nil) then FreeThenNil(SplashForm);

View File

@ -404,6 +404,7 @@ begin
else else
EnvironmentOptions.NewFormTemplate:=Template.Name; EnvironmentOptions.NewFormTemplate:=Template.Name;
//DebugLn(['TMainIDEBar.NewUFDefaultClick ',Template.Name]); //DebugLn(['TMainIDEBar.NewUFDefaultClick ',Template.Name]);
EnvironmentOptions.Save(False); EnvironmentOptions.Save(False);
end; end;

View File

@ -183,7 +183,7 @@ type
OpenFlags: TOpenFlags): TModalResult; virtual; abstract; OpenFlags: TOpenFlags): TModalResult; virtual; abstract;
procedure UpdateWindowMenu(Immediately: boolean = false); virtual; abstract; procedure UpdateWindowMenu(Immediately: boolean = false); virtual; abstract;
procedure SaveEnvironment; virtual; abstract; procedure SaveEnvironment(Immediately: boolean = false); virtual; abstract;
procedure UpdateHighlighters(Immediately: boolean = false); virtual; abstract; procedure UpdateHighlighters(Immediately: boolean = false); virtual; abstract;
procedure SetRecentSubMenu(Section: TIDEMenuSection; FileList: TStringList; procedure SetRecentSubMenu(Section: TIDEMenuSection; FileList: TStringList;
OnClickEvent: TNotifyEvent); virtual; abstract; OnClickEvent: TNotifyEvent); virtual; abstract;