IDE: Make OI visible on first start even when configuration directory is missing, but still Initial Setup Dialog has no reason to be shown (all its checks are passing correct). Fixes issue #39328.

This commit is contained in:
PragmaticLinux 2022-04-28 21:08:47 +02:00 committed by Maxim Ganetsky
parent 3f3fc0b9a7
commit 4e1548d574

View File

@ -649,6 +649,7 @@ type
FFixingGlobalComponentLock: integer;
OldCompilerFilename, OldLanguage: String;
OIChangedTimer: TIdleTimer;
FEnvOptsCfgExisted: boolean; // tracks if a local or user specific environment options configuration file existed
FIdentifierWordCompletion: TSourceEditorWordCompletion;
FIdentifierWordCompletionWordList: TStringList;
@ -1206,7 +1207,6 @@ procedure TMainIDE.LoadGlobalOptions;
end;
var
EnvOptsCfgExisted: boolean;
s, LastCalled: String;
OldVer: String;
NowVer: String;
@ -1219,7 +1219,6 @@ begin
with EnvironmentOptions do
begin
EnvOptsCfgExisted := FileExistsCached(GetDefaultConfigFilename);
OnBeforeRead := @EnvironmentOptionsBeforeRead;
OnBeforeWrite := @EnvironmentOptionsBeforeWrite;
OnAfterWrite := @EnvironmentOptionsAfterWrite;
@ -1308,8 +1307,8 @@ begin
OldVer:=EnvironmentOptions.OldLazarusVersion;
NowVer:=GetLazarusVersionString;
//debugln(['TMainIDE.LoadGlobalOptions ',EnvOptsCfgExisted,' diff=',OldVer<>NowVer,' Now=',NowVer,' Old=',OldVer,' Comp=',CompareLazarusVersion(NowVer,OldVer)]);
if EnvOptsCfgExisted and (OldVer<>NowVer) then
//debugln(['TMainIDE.LoadGlobalOptions ',FEnvOptsCfgExisted,' diff=',OldVer<>NowVer,' Now=',NowVer,' Old=',OldVer,' Comp=',CompareLazarusVersion(NowVer,OldVer)]);
if FEnvOptsCfgExisted and (OldVer<>NowVer) then
begin
IsUpgrade:=CompareLazarusVersion(NowVer,OldVer)>0;
if OldVer='' then
@ -1395,7 +1394,6 @@ var
CfgCache: TPCTargetConfigCache;
OldLazDir: String;
Note: string;
OI: TSimpleWindowLayout;
ConfigFile: string;
SkipAllTests: Boolean;
begin
@ -1491,10 +1489,6 @@ begin
Application.Terminate;
exit;
end;
// show OI with empty configuration
OI := IDEWindowIntf.IDEWindowCreators.SimpleLayoutStorage.ItemByFormID(DefaultObjectInspectorName);
if OI<>nil then
OI.Visible := True;
EnvironmentOptions.Save(true);
if OldLazDir<>EnvironmentOptions.LazarusDirectory then begin
// fetch new translations
@ -1535,6 +1529,9 @@ begin
// setup macros before loading options
MainBuildBoss.SetupTransferMacros;
// set flag to track if a local or user specific environment options configuration file existed
FEnvOptsCfgExisted := FileExistsCached(EnvironmentOptions.GetDefaultConfigFilename);
// load options
CreatePrimaryConfigPath;
StartProtocol;
@ -2152,6 +2149,8 @@ begin
end;
procedure TMainIDE.SetupObjectInspector;
var
OIWindowLayout: TSimpleWindowLayout;
begin
IDECmdScopeObjectInspectorOnly.AddWindowClass(TObjectInspectorDlg);
@ -2160,6 +2159,15 @@ begin
ShowAnchorDesigner:=@mnuViewAnchorEditorClicked;
ShowTabOrderEditor:=@mnuViewTabOrderClicked;
// always show the object inspector in case no local or user specific environment
// options configuration file existed
if not FEnvOptsCfgExisted then
begin
OIWindowLayout := IDEWindowCreators.SimpleLayoutStorage.ItemByFormID(DefaultObjectInspectorName);
if OIWindowLayout <> nil then
OIWindowLayout.Visible := True;
end;
end;
procedure TMainIDE.SetupFormEditor;