diff --git a/packager/packagedefs.pas b/packager/packagedefs.pas index 962a56ce98..09033c4127 100644 --- a/packager/packagedefs.pas +++ b/packager/packagedefs.pas @@ -702,6 +702,7 @@ type function RemovedDepByIndex(Index: integer): TPkgDependency; procedure AddRequiredDependency(Dependency: TPkgDependency); procedure AddPackageDependency(const PackageName: string); + procedure RemoveRequiredDepSilently(Dependency: TPkgDependency); procedure RemoveRequiredDependency(Dependency: TPkgDependency); procedure DeleteRequiredDependency(Dependency: TPkgDependency); procedure DeleteRemovedDependency(Dependency: TPkgDependency); @@ -3507,13 +3508,14 @@ begin //debugln('TLazPackage.FixFilesCaseSensitivity New ',dbgs(i),' NewShortFilename=',NewShortFilename); if CurShortFilename<>NewShortFilename then begin // case changes - NewFilename:= - AppendPathDelim(ExtractFilePath(CurFile.Filename))+NewShortFilename; + NewFilename:=AppendPathDelim(ExtractFilePath(CurFile.Filename))+NewShortFilename; //debugln('TLazPackage.FixFilesCaseSensitivity New ',dbgs(i),' NewFilename=',NewFilename); CurFile.Filename:=NewFilename; Result:=true; end; end; + if Result then + Modified:=true; finally if SrcDirs<>nil then begin for i:=0 to SrcDirs.Count-1 do @@ -3551,12 +3553,18 @@ begin AddRequiredDependency(Dependency); end; -procedure TLazPackage.RemoveRequiredDependency(Dependency: TPkgDependency); +procedure TLazPackage.RemoveRequiredDepSilently(Dependency: TPkgDependency); +// Remove a dependency without setting the Modified flag. Caller must take care of it. begin Dependency.RemoveFromList(FFirstRequiredDependency,pdlRequires); Dependency.RequiredPackage:=nil; Dependency.AddToList(FFirstRemovedDependency,pdlRequires); Dependency.Removed:=true; +end; + +procedure TLazPackage.RemoveRequiredDependency(Dependency: TPkgDependency); +begin + RemoveRequiredDepSilently(Dependency); Modified:=true; end; diff --git a/packager/packageeditor.pas b/packager/packageeditor.pas index d6982eeb24..d412ddb019 100644 --- a/packager/packageeditor.pas +++ b/packager/packageeditor.pas @@ -620,15 +620,12 @@ var AFilename: String; Dependency: TPkgDependency; i: Integer; - HasFiles, HasPkgs: Boolean; TVNode: TTreeNode; NodeData: TPENodeData; Item: TObject; begin BeginUpdate; try - HasFiles:=False; - HasPkgs:=False; for i:=ItemsTreeView.SelectionCount-1 downto 0 do begin TVNode:=ItemsTreeView.Selections[i]; if not GetNodeDataItem(TVNode,NodeData,Item) then continue; @@ -649,7 +646,6 @@ begin end; PkgFile.Filename:=AFilename; LazPackage.UnremovePkgFile(PkgFile); - HasFiles:=True; end else if Item is TPkgDependency then begin Dependency:=TPkgDependency(Item); @@ -657,15 +653,9 @@ begin if CheckAddingDependency(LazPackage,Dependency,false,true)<>mrOk then exit; LazPackage.RemoveRemovedDependency(Dependency); PackageGraph.AddDependencyToPackage(LazPackage,Dependency); - HasPkgs:=True; end; end; - if HasFiles then begin - UpdateFiles; - UpdateRemovedFiles; - end; - if HasPkgs then - UpdateRequiredPkgs; + LazPackage.Modified:=True; finally EndUpdate; end; @@ -1290,14 +1280,11 @@ begin end; // confirm deletion - if (FileCount>0) then begin + if FileCount>0 then begin if ConfirmFileDeletion<>mrYes then Exit; FilesBranch:=FilterEdit.GetExistingBranch(FFilesNode); end; - if (PkgCount>0) then begin - if ConfirmPkgDeletion<>mrYes then Exit; - PackageGraph.BeginUpdate(True); - end; + if (PkgCount>0) and (ConfirmPkgDeletion<>mrYes) then Exit; // remove for i:=ItemsTreeView.SelectionCount-1 downto 0 do begin @@ -1309,18 +1296,12 @@ begin LazPackage.RemoveFileSilently(TPkgFile(Item)); end else if Item is TPkgDependency then - PackageGraph.RemoveDependencyFromPackage(LazPackage,TPkgDependency(Item),true); + LazPackage.RemoveRequiredDepSilently(TPkgDependency(Item)); end; - if (PkgCount>0) then begin - PackageGraph.EndUpdate; - UpdateRequiredPkgs; - end; - if (FileCount>0) then begin + if PkgCount=0 then fForcedFlags:=[pefNeedUpdateRemovedFiles]; // Force update for removed files only. - LazPackage.Modified:=True; // This will update also other possible editors. - fForcedFlags:=[]; - UpdateRemovedFiles; - end; + LazPackage.Modified:=True; // This will update also other possible editors. + fForcedFlags:=[]; finally EndUpdate; @@ -1677,7 +1658,6 @@ begin CurFile.FileType:=CurPFT; if not NodeData.Removed then LazPackage.Modified:=true; - UpdateFiles; end; finally EndUpdate; @@ -1773,7 +1753,6 @@ begin CurFile.DisableI18NForLFM:=DisableI18NForLFMCheckBox.Checked; if not NodeData.Removed then LazPackage.Modified:=true; - UpdateFiles; end; finally EndUpdate; @@ -2019,7 +1998,6 @@ var FreeAndNil(FNextSelectedPart); FNextSelectedPart:=TPENodeData.Create(penFile,AddParams.UnitFilename,false); PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename); - UpdateFiles; end; procedure AddVirtualUnit(AddParams: TAddToPkgResult); @@ -2029,7 +2007,6 @@ var FreeAndNil(FNextSelectedPart); FNextSelectedPart:=TPENodeData.Create(penFile,AddParams.UnitFilename,false); PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename); - UpdateFiles; end; procedure AddNewComponent(AddParams: TAddToPkgResult); @@ -2050,7 +2027,6 @@ var PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename); // open file in editor PackageEditors.CreateNewFile(Self,AddParams); - UpdateFiles; end; procedure AddRequiredPkg(AddParams: TAddToPkgResult); @@ -2060,7 +2036,6 @@ var FreeAndNil(FNextSelectedPart); FNextSelectedPart:=TPENodeData.Create(penDependency, AddParams.Dependency.PackageName,false); - UpdateRequiredPkgs; end; procedure AddFile(AddParams: TAddToPkgResult); @@ -2074,7 +2049,6 @@ var end; FreeAndNil(FNextSelectedPart); FNextSelectedPart:=TPENodeData.Create(penFile,AddParams.UnitFilename,false); - UpdateFiles; end; procedure AddNewFile(AddParams: TAddToPkgResult); @@ -2113,7 +2087,6 @@ var NewPkgFileFlags, cpNormal); FreeAndNil(FNextSelectedPart); FNextSelectedPart:=TPENodeData.Create(penFile,NewFilename,false); - UpdateFiles; end; end; end; @@ -2164,7 +2137,7 @@ begin OldParams.Free; end; AddParams.Free; - LazPackage.Modified:=true; + Assert(LazPackage.Modified, 'ShowAddDialog: LazPackage.Modified = False'); finally IgnoreUnitPaths.Free; IgnoreIncPaths.Free; @@ -3208,7 +3181,6 @@ var begin TreeSelection:=ItemsTreeView.StoreCurrentSelection; LazPackage.SortFiles; - UpdateFiles; ItemsTreeView.ApplyStoredSelection(TreeSelection); end; @@ -3219,15 +3191,12 @@ end; procedure TPackageEditorForm.DoFixFilesCase; begin - if LazPackage.FixFilesCaseSensitivity then - LazPackage.Modified:=true; - UpdateFiles; + LazPackage.FixFilesCaseSensitivity; end; procedure TPackageEditorForm.DoShowMissingFiles; begin ShowMissingPkgFilesDialog(LazPackage); - UpdateFiles; end; constructor TPackageEditorForm.Create(TheOwner: TComponent);