PackagerEditor: improve updating only parts of the view after user changes.

git-svn-id: trunk@46224 -
This commit is contained in:
juha 2014-09-14 13:23:43 +00:00
parent 1e2a6cc7de
commit 56e178994f
2 changed files with 19 additions and 9 deletions

View File

@ -579,7 +579,7 @@ begin
end; end;
function TTreeFilterEdit.GetBranch(ARootNode: TTreeNode): TTreeFilterBranch; function TTreeFilterEdit.GetBranch(ARootNode: TTreeNode): TTreeFilterBranch;
// Get a new or existing branch for a given tree-node. // Get a new or existing branch with data cleared for a given tree-node.
begin begin
if not Assigned(fBranches) then if not Assigned(fBranches) then
fBranches := TBranchList.Create; fBranches := TBranchList.Create;

View File

@ -649,7 +649,8 @@ begin
end end
else if Item is TPkgDependency then begin else if Item is TPkgDependency then begin
Dependency:=TPkgDependency(Item); Dependency:=TPkgDependency(Item);
// re-add dependency // Re-add dependency
fForcedFlags:=[pefNeedUpdateRemovedFiles,pefNeedUpdateRequiredPkgs];
if CheckAddingDependency(LazPackage,Dependency,false,true)<>mrOk then exit; if CheckAddingDependency(LazPackage,Dependency,false,true)<>mrOk then exit;
LazPackage.RemoveRemovedDependency(Dependency); LazPackage.RemoveRemovedDependency(Dependency);
PackageGraph.AddDependencyToPackage(LazPackage,Dependency); PackageGraph.AddDependencyToPackage(LazPackage,Dependency);
@ -1298,10 +1299,11 @@ begin
else if Item is TPkgDependency then else if Item is TPkgDependency then
LazPackage.RemoveRequiredDepSilently(TPkgDependency(Item)); LazPackage.RemoveRequiredDepSilently(TPkgDependency(Item));
end; end;
if PkgCount=0 then if FileCount>0 then // Force update for removed files only.
fForcedFlags:=[pefNeedUpdateRemovedFiles]; // Force update for removed files only. fForcedFlags:=fForcedFlags+[pefNeedUpdateRemovedFiles];
if PkgCount>0 then
fForcedFlags:=fForcedFlags+[pefNeedUpdateRemovedFiles,pefNeedUpdateRequiredPkgs];
LazPackage.Modified:=True; // This will update also other possible editors. LazPackage.Modified:=True; // This will update also other possible editors.
fForcedFlags:=[];
finally finally
EndUpdate; EndUpdate;
@ -1682,8 +1684,10 @@ begin
for i:=0 to ListOfNodeInfos.Count-1 do begin for i:=0 to ListOfNodeInfos.Count-1 do begin
Info:=TCPDNodeInfo(ListOfNodeInfos[i]); Info:=TCPDNodeInfo(ListOfNodeInfos[i]);
Dependency:=LazPackage.FindDependencyByName(Info.Dependency); Dependency:=LazPackage.FindDependencyByName(Info.Dependency);
if Dependency<>nil then if Dependency<>nil then begin
fForcedFlags:=[pefNeedUpdateRemovedFiles,pefNeedUpdateRequiredPkgs];
PackageGraph.RemoveDependencyFromPackage(LazPackage,Dependency,true); PackageGraph.RemoveDependencyFromPackage(LazPackage,Dependency,true);
end;
end; end;
finally finally
ListOfNodeInfos.Free; ListOfNodeInfos.Free;
@ -2032,6 +2036,7 @@ var
procedure AddRequiredPkg(AddParams: TAddToPkgResult); procedure AddRequiredPkg(AddParams: TAddToPkgResult);
begin begin
// add dependency // add dependency
fForcedFlags:=[pefNeedUpdateRequiredPkgs];
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency); PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
FreeAndNil(FNextSelectedPart); FreeAndNil(FNextSelectedPart);
FNextSelectedPart:=TPENodeData.Create(penDependency, FNextSelectedPart:=TPENodeData.Create(penDependency,
@ -2291,6 +2296,7 @@ begin
IdleConnected:=false; IdleConnected:=false;
finally finally
ItemsTreeView.EndUpdate; ItemsTreeView.EndUpdate;
fForcedFlags:=[];
end; end;
end; end;
@ -2382,8 +2388,8 @@ begin
if FRemovedFilesNode<>nil then begin if FRemovedFilesNode<>nil then begin
FilterEdit.DeleteBranch(FRemovedFilesNode); FilterEdit.DeleteBranch(FRemovedFilesNode);
FreeAndNil(FRemovedFilesNode); FreeAndNil(FRemovedFilesNode);
FilterEdit.InvalidateFilter;
end; end;
FilterEdit.InvalidateFilter;
end; end;
UpdatePEProperties; UpdatePEProperties;
@ -2426,6 +2432,7 @@ begin
end; end;
if (FNextSelectedPart<>nil) and (FNextSelectedPart.Typ=penDependency) then if (FNextSelectedPart<>nil) and (FNextSelectedPart.Typ=penDependency) then
FreeAndNil(FNextSelectedPart); FreeAndNil(FNextSelectedPart);
RequiredBranch.InvalidateBranch;
// removed required packages // removed required packages
CurDependency:=LazPackage.FirstRemovedDependency; CurDependency:=LazPackage.FirstRemovedDependency;
@ -2442,6 +2449,7 @@ begin
RemovedBranch.AddNodeData(CurDependency.AsString, NodeData); RemovedBranch.AddNodeData(CurDependency.AsString, NodeData);
CurDependency:=CurDependency.NextRequiresDependency; CurDependency:=CurDependency.NextRequiresDependency;
end; end;
RemovedBranch.InvalidateBranch;
end else begin end else begin
if FRemovedRequiredNode<>nil then begin if FRemovedRequiredNode<>nil then begin
FilterEdit.DeleteBranch(FRemovedRequiredNode); FilterEdit.DeleteBranch(FRemovedRequiredNode);
@ -2449,8 +2457,10 @@ begin
end; end;
end; end;
FNextSelectedPart:=nil; FNextSelectedPart:=nil;
FilterEdit.Filter := OldFilter; // This triggers ApplyFilter if OldFilter <> '' then begin
FilterEdit.InvalidateFilter; FilterEdit.Filter := OldFilter; // This triggers ApplyFilter
FilterEdit.InvalidateFilter;
end;
UpdatePEProperties; UpdatePEProperties;
UpdateButtons; UpdateButtons;
end; end;