diff --git a/packager/packagedefs.pas b/packager/packagedefs.pas index 504af51064..a117324d17 100644 --- a/packager/packagedefs.pas +++ b/packager/packagedefs.pas @@ -717,7 +717,7 @@ type procedure ShortenFilename(var ExpandedFilename: string; UseUp: boolean); procedure LongenFilename(var AFilename: string); function FindPkgFile(const AFilename: string; - IgnoreRemoved, FindNewFile: boolean): TPkgFile; + IgnoreRemoved, FindVirtualFile: boolean): TPkgFile; function FindUnitWithRegister(IgnorePkgFile: TPkgFile = nil): TPkgFile; function FindUnit(const TheUnitName: string): TPkgFile; function FindUnit(const TheUnitName: string; IgnoreRemoved: boolean): TPkgFile; @@ -3086,8 +3086,8 @@ begin Result:=FComponents.IndexOf(PkgComponent); end; -function TLazPackage.FindPkgFile(const AFilename: string; - IgnoreRemoved, FindNewFile: boolean): TPkgFile; +function TLazPackage.FindPkgFile(const AFilename: string; IgnoreRemoved, + FindVirtualFile: boolean): TPkgFile; var TheFilename: String; Cnt: Integer; @@ -3097,20 +3097,11 @@ begin TheFilename:=AFilename; - if FindNewFile and (not FilenameIsAbsolute(TheFilename)) then begin - // this is a virtual file, not yet saved - // -> prepend Package Directory and check if it does not exists yet in - // the package directory - LongenFilename(TheFilename); - if FileExistsUTF8(TheFilename) then begin - // the file exists -> this virtual file does not belong to the package - exit; - end; - end; - Cnt:=FileCount; for i:=0 to Cnt-1 do begin Result:=Files[i]; + if (not FindVirtualFile) and (not FilenameIsAbsolute(Result.Filename)) then + continue; if (CompareFilenames(Result.Filename,TheFilename)=0) or (CompareFilenames(Result.GetFullFilename,TheFilename)=0) then exit; @@ -3119,6 +3110,8 @@ begin Cnt:=RemovedFilesCount; for i:=0 to Cnt-1 do begin Result:=RemovedFiles[i]; + if (not FindVirtualFile) and (not FilenameIsAbsolute(Result.Filename)) then + continue; if (CompareFilenames(Result.Filename,TheFilename)=0) or (CompareFilenames(Result.GetFullFilename,TheFilename)=0) then exit; diff --git a/packager/packagesystem.pas b/packager/packagesystem.pas index 46b10a08d8..5840f0d281 100644 --- a/packager/packagesystem.pas +++ b/packager/packagesystem.pas @@ -207,7 +207,7 @@ type var File1: TPkgFile; var ConflictPkg: TLazPackage): boolean; function FindFileInAllPackages(const TheFilename: string; - IgnoreDeleted, FindNewFile: boolean): TPkgFile; + IgnoreDeleted, FindVirtualFile: boolean): TPkgFile; procedure FindPossibleOwnersOfUnit(const TheFilename: string; OwnerList: TFPList); function FindLowestPkgNodeByName(const PkgName: string): TAVLTreeNode; @@ -1185,7 +1185,7 @@ begin end; function TLazPackageGraph.FindFileInAllPackages(const TheFilename: string; - IgnoreDeleted, FindNewFile: boolean): TPkgFile; + IgnoreDeleted, FindVirtualFile: boolean): TPkgFile; var Cnt: Integer; i: Integer; @@ -1193,7 +1193,7 @@ begin Cnt:=Count; for i:=0 to Cnt-1 do begin Result:=Packages[i].FindPkgFile(TheFilename,IgnoreDeleted, - FindNewFile); + FindVirtualFile); if Result<>nil then exit; end; Result:=nil; diff --git a/packager/pkgmanager.pas b/packager/pkgmanager.pas index d504ee96f4..5be7042dff 100644 --- a/packager/pkgmanager.pas +++ b/packager/pkgmanager.pas @@ -1641,6 +1641,10 @@ var PkgFile: TPkgFile; begin Result:=''; + if FilenameIsAbsolute(Filename) then begin + Result:=ExtractFilePath(Filename); + exit; + end; PkgFile:=PackageGraph.FindFileInAllPackages(Filename,true,true); if PkgFile=nil then exit; APackage:=PkgFile.LazPackage;