diff --git a/ide/codetoolsdefines.pas b/ide/codetoolsdefines.pas index 5f2c95eb61..5044f1021e 100644 --- a/ide/codetoolsdefines.pas +++ b/ide/codetoolsdefines.pas @@ -792,7 +792,7 @@ begin FileTitles[0]:=lisCodeToolsDefsLazarusDirectory; FileDescs[0]:=lisCodeToolsDefsTheLazarusMainDirectory; - FileNames[0]:=IDEProcs.ProgramDirectory; + FileNames[0]:=IDEProcs.ProgramDirectory(true); FileFlags[0]:=[iftDirectory,iftNotEmpty,iftMustExist]; EndUpdate; diff --git a/ide/environmentopts.pp b/ide/environmentopts.pp index 35b8c11348..b798b80d6d 100644 --- a/ide/environmentopts.pp +++ b/ide/environmentopts.pp @@ -673,7 +673,7 @@ begin FShowMenuGlyphs := sbgSystem; // files - LazarusDirectory:=IDEProcs.ProgramDirectory; + LazarusDirectory:=IDEProcs.ProgramDirectory(true); FLazarusDirsHistory:=TStringList.Create; CompilerFilename:=''; FCompilerFileHistory:=TStringList.Create; @@ -918,7 +918,7 @@ begin LoadRecentList(XMLConfig,FLazarusDirsHistory, Path+'LazarusDirectory/History/'); if FLazarusDirsHistory.Count=0 then begin - FLazarusDirsHistory.Add(ProgramDirectory); + FLazarusDirsHistory.Add(ProgramDirectory(true)); end; CompilerFilename:=TrimFilename(XMLConfig.GetValue( Path+'CompilerFilename/Value',FCompilerFilename)); diff --git a/ide/frames/files_options.pas b/ide/frames/files_options.pas index 79e1ee6927..ad753ddb72 100644 --- a/ide/frames/files_options.pas +++ b/ide/frames/files_options.pas @@ -174,7 +174,7 @@ begin with LazarusDirComboBox.Items do begin BeginUpdate; - Add(ProgramDirectory); + Add(ProgramDirectory(true)); EndUpdate; end; diff --git a/ide/ideprocs.pp b/ide/ideprocs.pp index 8761f571e4..a1b026a049 100644 --- a/ide/ideprocs.pp +++ b/ide/ideprocs.pp @@ -225,7 +225,7 @@ procedure StringToStringList(const s: string; List: TStrings); function GetCurrentUserName: string; function GetCurrentMailAddress: string; function GetProgramSearchPath: string; -function ProgramDirectory: string; +function ProgramDirectory(BundleRoot: boolean): string; // debugging procedure RaiseException(const Msg: string); @@ -2315,9 +2315,14 @@ begin CopyDir(SrcDir,DestDirectory); end; -function ProgramDirectory: string; +function ProgramDirectory(BundleRoot: boolean): string; +const + BundlePostFix='.app/Contents/MacOS'; begin Result:=FileUtil.ProgramDirectory; + if BundleRoot + and (RightStr(ChompPathDelim(Result),length(BundlePostFix))=BundlePostFix) then + Result:=ExtractFilePath(LeftStr(Result,length(Result)-length(BundlePostFix))); end; function CreateEmptyFile(const Filename: string): boolean; diff --git a/ide/initialsetupdlgs.pas b/ide/initialsetupdlgs.pas index 25bd1b2ead..ceb1c08bdf 100644 --- a/ide/initialsetupdlgs.pas +++ b/ide/initialsetupdlgs.pas @@ -141,7 +141,7 @@ var begin CurLazDir:=EnvironmentOptions.LazarusDirectory; if CurLazDir='' then begin - CurLazDir:=ProgramDirectory; + CurLazDir:=ProgramDirectory(true); if not CheckLazarusDirectory(CurLazDir) then CurLazDir:=FindDefaultLazarusSrcDirectory; end; @@ -153,7 +153,7 @@ begin ), mtWarning,[mbIgnore],0); end else begin - DefaultLazDir:=ProgramDirectory; + DefaultLazDir:=ProgramDirectory(true); if CompareFilenames(DefaultLazDir,CurLazDir)<>0 then begin r:=MessageDlg(lisLazarusDirectoryNotFound, Format(lisTheCurrentLazarusDirectoryDoesNotLookCorrectWithou, ['"', diff --git a/ide/main.pp b/ide/main.pp index 770f495801..d0ab710ce9 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -1027,7 +1027,7 @@ begin EnableRemoteControl:=false; if IsHelpRequested then begin - TranslateResourceStrings(ProgramDirectory,''); + TranslateResourceStrings(ProgramDirectory(true),''); AHelp := TStringList.Create; AddHelp([lislazarusOptionsProjectFilename]);