mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 00:02:03 +02:00
Package editor: Don't update the whole tree when moving a dependency up/down. Part of issue #26188.
git-svn-id: trunk@50796 -
This commit is contained in:
parent
d9f10162d5
commit
53810b548d
@ -55,7 +55,9 @@ type
|
||||
function GetData(AIndex: integer): TObject;
|
||||
procedure ClearNodeData;
|
||||
procedure InvalidateBranch;
|
||||
procedure MoveFile(CurIndex, NewIndex: integer);
|
||||
procedure Move(CurIndex, NewIndex: integer);
|
||||
public
|
||||
property Items: TStringList read fOriginalData;
|
||||
end;
|
||||
|
||||
TBranchList = specialize TFPGObjectList<TTreeFilterBranch>;
|
||||
@ -397,7 +399,7 @@ begin
|
||||
ApplyFilter;
|
||||
end;
|
||||
|
||||
procedure TTreeFilterBranch.MoveFile(CurIndex, NewIndex: integer);
|
||||
procedure TTreeFilterBranch.Move(CurIndex, NewIndex: integer);
|
||||
begin
|
||||
fOriginalData.Move(CurIndex, NewIndex);
|
||||
end;
|
||||
|
@ -294,10 +294,10 @@ type
|
||||
ListType: TPkgDependencyList);
|
||||
procedure RemoveFromList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList);
|
||||
procedure MoveUpInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList);
|
||||
procedure MoveDownInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList);
|
||||
function MoveUpInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList): Boolean;
|
||||
function MoveDownInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList): Boolean;
|
||||
function MakeFilenameRelativeToOwner(const AFilename: string): string;
|
||||
function FindDefaultFilename: string;
|
||||
public
|
||||
@ -708,8 +708,8 @@ type
|
||||
procedure DeleteRequiredDependency(Dependency: TPkgDependency);
|
||||
procedure DeleteRemovedDependency(Dependency: TPkgDependency);
|
||||
procedure RemoveRemovedDependency(Dependency: TPkgDependency);
|
||||
procedure MoveRequiredDependencyUp(Dependency: TPkgDependency);
|
||||
procedure MoveRequiredDependencyDown(Dependency: TPkgDependency);
|
||||
function MoveRequiredDependencyUp(Dependency: TPkgDependency): Boolean;
|
||||
function MoveRequiredDependencyDown(Dependency: TPkgDependency): Boolean;
|
||||
function CreateDependencyWithOwner(NewOwner: TObject;
|
||||
WithMinVersion: boolean = false): TPkgDependency;
|
||||
function Requires(APackage: TLazPackage): boolean;
|
||||
@ -2095,12 +2095,12 @@ begin
|
||||
PrevDependency[ListType]:=nil;
|
||||
end;
|
||||
|
||||
procedure TPkgDependency.MoveUpInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList);
|
||||
function TPkgDependency.MoveUpInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList): Boolean;
|
||||
var
|
||||
OldPrev: TPkgDependency;
|
||||
begin
|
||||
if (FirstDependency=Self) or (PrevDependency[ListType]=nil) then exit;
|
||||
if (FirstDependency=Self) or (PrevDependency[ListType]=nil) then exit(False);
|
||||
OldPrev:=PrevDependency[ListType];
|
||||
if OldPrev.PrevDependency[ListType]<>nil then
|
||||
OldPrev.PrevDependency[ListType].NextDependency[ListType]:=Self;
|
||||
@ -2111,14 +2111,15 @@ begin
|
||||
NextDependency[ListType]:=OldPrev;
|
||||
OldPrev.PrevDependency[ListType]:=Self;
|
||||
if FirstDependency=OldPrev then FirstDependency:=Self;
|
||||
Result:=True;
|
||||
end;
|
||||
|
||||
procedure TPkgDependency.MoveDownInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList);
|
||||
function TPkgDependency.MoveDownInList(var FirstDependency: TPkgDependency;
|
||||
ListType: TPkgDependencyList): Boolean;
|
||||
var
|
||||
OldNext: TPkgDependency;
|
||||
begin
|
||||
if (NextDependency[ListType]=nil) then exit;
|
||||
if (NextDependency[ListType]=nil) then exit(False);
|
||||
OldNext:=NextDependency[ListType];
|
||||
if OldNext.NextDependency[ListType]<>nil then
|
||||
OldNext.NextDependency[ListType].PrevDependency[ListType]:=Self;
|
||||
@ -2129,6 +2130,7 @@ begin
|
||||
PrevDependency[ListType]:=OldNext;
|
||||
OldNext.NextDependency[ListType]:=Self;
|
||||
if FirstDependency=Self then FirstDependency:=OldNext;
|
||||
Result:=True;
|
||||
end;
|
||||
|
||||
function TPkgDependency.MakeFilenameRelativeToOwner(const AFilename: string): string;
|
||||
@ -3624,14 +3626,14 @@ begin
|
||||
Dependency.Free;
|
||||
end;
|
||||
|
||||
procedure TLazPackage.MoveRequiredDependencyUp(Dependency: TPkgDependency);
|
||||
function TLazPackage.MoveRequiredDependencyUp(Dependency: TPkgDependency): Boolean;
|
||||
begin
|
||||
Dependency.MoveUpInList(FFirstRequiredDependency,pdlRequires);
|
||||
Result := Dependency.MoveUpInList(FFirstRequiredDependency,pdlRequires);
|
||||
end;
|
||||
|
||||
procedure TLazPackage.MoveRequiredDependencyDown(Dependency: TPkgDependency);
|
||||
function TLazPackage.MoveRequiredDependencyDown(Dependency: TPkgDependency): Boolean;
|
||||
begin
|
||||
Dependency.MoveDownInList(FFirstRequiredDependency,pdlRequires);
|
||||
Result := Dependency.MoveDownInList(FFirstRequiredDependency,pdlRequires);
|
||||
end;
|
||||
|
||||
function TLazPackage.CreateDependencyWithOwner(NewOwner: TObject;
|
||||
|
@ -3241,7 +3241,7 @@ begin
|
||||
if (NewIndex<0) or (NewIndex>=LazPackage.FileCount) then exit;
|
||||
FilesBranch:=FilterEdit.GetExistingBranch(FFilesNode);
|
||||
LazPackage.MoveFile(OldIndex,NewIndex);
|
||||
FilesBranch.MoveFile(OldIndex,NewIndex);
|
||||
FilesBranch.Move(OldIndex,NewIndex);
|
||||
UpdatePEProperties;
|
||||
UpdateStatusBar;
|
||||
FilterEdit.InvalidateFilter;
|
||||
@ -3249,16 +3249,24 @@ end;
|
||||
|
||||
procedure TPackageEditorForm.DoMoveDependency(Offset: integer);
|
||||
var
|
||||
OldSelection: TStringList;
|
||||
OldIndex, NewIndex: Integer;
|
||||
RequiredBranch: TTreeFilterBranch;
|
||||
Moved: Boolean;
|
||||
begin
|
||||
ItemsTreeView.BeginUpdate;
|
||||
OldSelection:=ItemsTreeView.StoreCurrentSelection;
|
||||
if (LazPackage=nil) or (FSingleSelectedDep=nil) then exit;
|
||||
if Offset<0 then
|
||||
PackageGraph.MoveRequiredDependencyUp(FSingleSelectedDep)
|
||||
Moved := LazPackage.MoveRequiredDependencyUp(FSingleSelectedDep)
|
||||
else
|
||||
PackageGraph.MoveRequiredDependencyDown(FSingleSelectedDep);
|
||||
ItemsTreeView.ApplyStoredSelection(OldSelection);
|
||||
ItemsTreeView.EndUpdate;
|
||||
Moved := LazPackage.MoveRequiredDependencyDown(FSingleSelectedDep);
|
||||
if not Moved then exit;
|
||||
RequiredBranch:=FilterEdit.GetExistingBranch(FRequiredPackagesNode);
|
||||
OldIndex:=RequiredBranch.Items.IndexOf(FSingleSelectedDep.PackageName);
|
||||
Assert(OldIndex<>-1, 'TPackageEditorForm.DoMoveDependency: "'+FSingleSelectedDep.PackageName+'" not found in FilterBranch.');
|
||||
NewIndex:=OldIndex+Offset;
|
||||
RequiredBranch.Move(OldIndex,NewIndex);
|
||||
UpdatePEProperties;
|
||||
UpdateStatusBar;
|
||||
FilterEdit.InvalidateFilter;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.DoSortFiles;
|
||||
|
Loading…
Reference in New Issue
Block a user