Package editor: don't update the whole tree after changing Min or Max version of required package. Part of issue #26188

git-svn-id: trunk@46038 -
This commit is contained in:
juha 2014-08-11 22:58:43 +00:00
parent 26324afb73
commit 79cefdc9de
2 changed files with 29 additions and 20 deletions

View File

@ -1534,48 +1534,58 @@ end;
procedure TPackageEditorForm.ApplyDependencyButtonClick(Sender: TObject);
var
NewDependency: TPkgDependency;
Flags: TPkgDependencyFlags;
MinVers, MaxVers: TPkgVersion;
begin
if LazPackage=nil then exit;
if FSingleSelectedDep=nil then exit;
if LazPackage.FindDependencyByName(FSingleSelectedDep.PackageName)<>FSingleSelectedDep
then exit;
NewDependency:=TPkgDependency.Create;
MinVers:=TPkgVersion.Create;
MaxVers:=TPkgVersion.Create;
try
NewDependency.Assign(FSingleSelectedDep);
// Assign relevant data to temp variables
Flags:=FSingleSelectedDep.Flags;
MinVers.Assign(FSingleSelectedDep.MinVersion);
MaxVers.Assign(FSingleSelectedDep.MinVersion);
// read minimum version
if UseMinVersionCheckBox.Checked then begin
NewDependency.Flags:=NewDependency.Flags+[pdfMinVersion];
if not NewDependency.MinVersion.ReadString(MinVersionEdit.Text) then begin
Include(Flags, pdfMinVersion);
if not MinVers.ReadString(MinVersionEdit.Text) then begin
MessageDlg(lisPckEditInvalidMinimumVersion,
Format(lisPckEditTheMinimumVersionIsNotAValidPackageVersion,
[MinVersionEdit.Text, LineEnding]),
mtError,[mbCancel],0);
exit;
end;
end else begin
NewDependency.Flags:=NewDependency.Flags-[pdfMinVersion];
end;
end
else
Exclude(Flags, pdfMinVersion);
// read maximum version
if UseMaxVersionCheckBox.Checked then begin
NewDependency.Flags:=NewDependency.Flags+[pdfMaxVersion];
if not NewDependency.MaxVersion.ReadString(MaxVersionEdit.Text) then begin
Include(Flags, pdfMaxVersion);
if not MaxVers.ReadString(MaxVersionEdit.Text) then begin
MessageDlg(lisPckEditInvalidMaximumVersion,
Format(lisPckEditTheMaximumVersionIsNotAValidPackageVersion,
[MaxVersionEdit.Text, LineEnding]),
mtError,[mbCancel],0);
exit;
end;
end else begin
NewDependency.Flags:=NewDependency.Flags-[pdfMaxVersion];
end;
end
else
Exclude(Flags, pdfMaxVersion);
PackageGraph.ChangeDependency(FSingleSelectedDep,NewDependency);
// Assign changes back to the dependency
FSingleSelectedDep.Flags := Flags;
FSingleSelectedDep.MinVersion.Assign(MinVers);
FSingleSelectedDep.MaxVersion.Assign(MaxVers);
LazPackage.ModifySilently;
finally
NewDependency.Free;
MaxVers.Free;
MinVers.Free;
end;
end;

View File

@ -386,7 +386,7 @@ type
procedure AddDependencyToPackage(APackage, RequiredPackage: TLazPackage);
procedure RemoveDependencyFromPackage(APackage: TLazPackage;
Dependency: TPkgDependency; AddToRemovedList: boolean);
procedure ChangeDependency(Dependency, NewDependency: TPkgDependency);
//procedure ChangeDependency(Dependency, NewDependency: TPkgDependency);
function OpenDependency(Dependency: TPkgDependency;
ShowAbort: boolean): TLoadPackageResult;
function FindAlternativeLPK(APackage: TLazPackage): string;
@ -5239,9 +5239,8 @@ begin
IncreaseBuildMacroChangeStamp;
EndUpdate;
end;
procedure TLazPackageGraph.ChangeDependency(Dependency,
NewDependency: TPkgDependency);
{
procedure TLazPackageGraph.ChangeDependency(Dependency, NewDependency: TPkgDependency);
begin
if Dependency.Compare(NewDependency)=0 then exit;
BeginUpdate(true);
@ -5252,7 +5251,7 @@ begin
DoDependencyChanged(Dependency);
EndUpdate;
end;
}
function TLazPackageGraph.OpenDependency(Dependency: TPkgDependency;
ShowAbort: boolean): TLoadPackageResult;