LCL: Fix CalculatePreferredSize. HorizontalSpacing was sometimes used for vertical size. Issue #20445

This commit is contained in:
Martin 2024-03-27 19:59:44 +01:00
parent 55cc226024
commit 689ef2119f

View File

@ -367,10 +367,13 @@ begin
end else if ChildData.Sides[a].CtrlData<>nil then begin end else if ChildData.Sides[a].CtrlData<>nil then begin
SiblingData:=ChildData.Sides[a].CtrlData; SiblingData:=ChildData.Sides[a].CtrlData;
// aligned or anchored to a sibling // aligned or anchored to a sibling
NewSpace:=ChildData.Borders[a];
if a in [akLeft,akTop] then begin if a in [akLeft,akTop] then begin
NewSpace:=ChildData.Borders[a];
if ChildData.Sides[a].Side=asrRight then begin if ChildData.Sides[a].Side=asrRight then begin
NewSpace:=Max(NewSpace,WinControl.ChildSizing.HorizontalSpacing); if a = akLeft then
NewSpace:=Max(NewSpace,WinControl.ChildSizing.HorizontalSpacing)
else
NewSpace:=Max(NewSpace,WinControl.ChildSizing.VerticalSpacing);
if a=akLeft then if a=akLeft then
NewSpace:=Max(NewSpace,SiblingData.Borders[akRight]) NewSpace:=Max(NewSpace,SiblingData.Borders[akRight])
else else
@ -379,11 +382,12 @@ begin
else if ChildData.Sides[a].Side=asrCenter then else if ChildData.Sides[a].Side=asrCenter then
NewSpace:=0; NewSpace:=0;
ChildData.Sides[a].Space:=NewSpace;
end else begin end else begin
NewSpace:=ChildData.Borders[a];
if ChildData.Sides[a].Side=asrTop then begin if ChildData.Sides[a].Side=asrTop then begin
NewSpace:=Max(NewSpace,WinControl.ChildSizing.VerticalSpacing); if a = akRight then
NewSpace:=Max(NewSpace,WinControl.ChildSizing.HorizontalSpacing)
else
NewSpace:=Max(NewSpace,WinControl.ChildSizing.VerticalSpacing);
if a=akRight then if a=akRight then
NewSpace:=Max(NewSpace,SiblingData.Borders[akLeft]) NewSpace:=Max(NewSpace,SiblingData.Borders[akLeft])
else else
@ -392,8 +396,8 @@ begin
else if ChildData.Sides[a].Side=asrCenter then else if ChildData.Sides[a].Side=asrCenter then
NewSpace:=0; NewSpace:=0;
ChildData.Sides[a].Space:=NewSpace;
end; end;
ChildData.Sides[a].Space:=NewSpace;
end else if a in Child.Anchors then begin end else if a in Child.Anchors then begin
// anchored to parent via BaseBounds // anchored to parent via BaseBounds
if a in [akLeft,akTop] then begin if a in [akLeft,akTop] then begin