merge r51068 #a7367c97d9: ide: fix Options changed through "Change Build Mode" CoolBar button isn't respected by the compiler. Issue #28059

git-svn-id: branches/fixes_1_6@51069 -
This commit is contained in:
ondrej 2015-12-28 19:33:23 +00:00
parent 6f2a1d05b7
commit b2b3cd958d
2 changed files with 62 additions and 26 deletions

View File

@ -434,6 +434,7 @@ type
procedure DoCodeExplorerOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure DoProjectOptionsBeforeRead(Sender: TObject);
procedure DoProjectOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure DoCompilerOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure OnCompilerOptionsDialogTest(Sender: TObject);
function DoTestCompilerSettings(TheCompilerOptions: TCompilerOptions): TModalResult;
function OnCheckCompOptsAndMainSrcForNewUnit(CompOpts: TLazCompilerOptions): TModalResult;
@ -4811,7 +4812,6 @@ end;
procedure TMainIDE.DoProjectOptionsAfterWrite(Sender: TObject; Restore: boolean);
var
AProject: TProject;
aFilename: String;
function GetTitle: String;
begin
@ -4910,36 +4910,11 @@ begin
mtWarning, [mbOk]);
end;
UpdateCaption;
AProject.DefineTemplates.AllChanged;
end;
if Restore then
begin
AProject.RestoreBuildModes;
AProject.RestoreSession;
end;
IncreaseCompilerParseStamp;
MainBuildBoss.SetBuildTargetProject1(false);
if not Restore then
begin
if AProject.UseAsDefault then
begin
// save as default
aFilename:=AppendPathDelim(GetPrimaryConfigPath)+DefaultProjectOptionsFilename;
AProject.WriteProject([pwfSkipSeparateSessionInfo,pwfIgnoreModified],
aFilename,EnvironmentOptions.BuildMatrixOptions);
end;
Project1.UpdateAllSyntaxHighlighter;
SourceEditorManager.BeginGlobalUpdate;
try
UpdateHighlighters(True);
SourceEditorManager.ReloadEditorOptions;
finally
SourceEditorManager.EndGlobalUpdate;
end;
end;
end;
procedure TMainIDE.ComponentPaletteClassSelected(Sender: TObject);
@ -6063,6 +6038,7 @@ begin
Result.OnChangeProjectInfoFile:=@OnProjectChangeInfoFile;
Result.IDEOptions.OnBeforeRead:=@DoProjectOptionsBeforeRead;
Result.IDEOptions.OnAfterWrite:=@DoProjectOptionsAfterWrite;
Result.OnCompilerOptionsAfterWrite := @DoCompilerOptionsAfterWrite;
end;
function TMainIDE.DoNewProject(ProjectDesc: TProjectDescriptor): TModalResult;
@ -6773,6 +6749,47 @@ begin
DoBuildProject(crCompile, []);
end;
procedure TMainIDE.DoCompilerOptionsAfterWrite(Sender: TObject; Restore: boolean
);
var
AProject: TProject;
aFilename: string;
begin
AProject:=(Sender as TProjectCompilerOptions).Project;
if not Restore then
begin
AProject.DefineTemplates.AllChanged;
end;
if Restore then
begin
AProject.RestoreBuildModes;
end;
IncreaseCompilerParseStamp;
MainBuildBoss.SetBuildTargetProject1(false);
if not Restore then
begin
if AProject.UseAsDefault then
begin
// save as default
aFilename:=AppendPathDelim(GetPrimaryConfigPath)+DefaultProjectOptionsFilename;
AProject.WriteProject([pwfSkipSeparateSessionInfo,pwfIgnoreModified],
aFilename,EnvironmentOptions.BuildMatrixOptions);
end;
Project1.UpdateAllSyntaxHighlighter;
SourceEditorManager.BeginGlobalUpdate;
try
UpdateHighlighters(True);
SourceEditorManager.ReloadEditorOptions;
finally
SourceEditorManager.EndGlobalUpdate;
end;
end;
end;
procedure TMainIDE.DoQuickCompile;
begin
DoBuildProject(crCompile,[pbfSkipLinking,pbfSkipTools,pbfSkipAssembler]);

View File

@ -550,6 +550,7 @@ type
property BuildMode: TProjectBuildMode read FBuildMode;
published
property CompileReasons: TCompileReasons read FCompileReasons write FCompileReasons;
property Project: TProject read FProject;
end;
{ TProjectDefineTemplates }
@ -615,6 +616,7 @@ type
function GetItems(Index: integer): TProjectBuildMode;
function GetModified: boolean;
procedure OnItemChanged(Sender: TObject);
procedure CompilerOptionsAfterWrite(Sender: TObject; Restore: boolean);
procedure SetModified(const AValue: boolean);
// Used by LoadFromXMLConfig
procedure AddMatrixMacro(const MacroName, MacroValue, ModeIdentifier: string; InSession: boolean);
@ -736,6 +738,7 @@ type
FOnLoadProjectInfo: TOnLoadProjectInfo;
FOnSaveProjectInfo: TOnSaveProjectInfo;
FOnSaveUnitSessionInfo: TOnSaveUnitSessionInfoInfo;
FOnCompilerOptionsAfterWrite: TIDEOptionsWriteEvent;
fPathDelimChanged: boolean; // PathDelim in system and current config differ (see StorePathDelim and SessionStorePathDelim)
FPOOutputDirectory: string;
fProjectDirectory: string;
@ -833,6 +836,7 @@ type
procedure SaveToLPI;
procedure SaveToSession;
function DoWrite(Filename: String; IsLpi: Boolean): TModalResult;
procedure CompilerOptionsAfterWrite(Sender: TObject; Restore: boolean);
protected
function GetActiveBuildModeID: string; override;
function GetDefineTemplates: TProjPackDefineTemplates;
@ -1079,6 +1083,8 @@ type
write FOnSaveProjectInfo;
property OnSaveUnitSessionInfo: TOnSaveUnitSessionInfoInfo
read FOnSaveUnitSessionInfo write FOnSaveUnitSessionInfo;
property OnCompilerOptionsAfterWrite: TIDEOptionsWriteEvent
read FOnCompilerOptionsAfterWrite write FOnCompilerOptionsAfterWrite;
property POOutputDirectory: string read FPOOutputDirectory write SetPOOutputDirectory;
property ProjectDirectory: string read fProjectDirectory;
property ProjectInfoFile: string read GetProjectInfoFile write SetProjectInfoFile;
@ -4725,6 +4731,12 @@ begin
Units[i].ClearUnitComponentDependencies(ClearTypes);
end;
procedure TProject.CompilerOptionsAfterWrite(Sender: TObject; Restore: boolean);
begin
if Assigned(FOnCompilerOptionsAfterWrite) then
FOnCompilerOptionsAfterWrite(Sender, Restore);
end;
procedure TProject.FindUnitsUsingSubComponent(SubComponent: TComponent;
List: TFPList; IgnoreOwner: boolean);
@ -6750,6 +6762,12 @@ begin
SessionMatrixOptions.Clear;
end;
procedure TProjectBuildModes.CompilerOptionsAfterWrite(Sender: TObject;
Restore: boolean);
begin
LazProject.CompilerOptionsAfterWrite(Sender, Restore);
end;
function TProjectBuildModes.IsEqual(OtherModes: TProjectBuildModes): boolean;
var
i: Integer;
@ -6833,6 +6851,7 @@ begin
if LazProject<>nil then
Result.CompilerOptions.BaseDirectory:=LazProject.ProjectDirectory;
Result.AddOnChangedHandler(@OnItemChanged);
Result.CompilerOptions.OnAfterWrite:=@CompilerOptionsAfterWrite;
fItems.Add(Result);
end;