diff --git a/lcl/include/wincontrol.inc b/lcl/include/wincontrol.inc index 4c5aa8f91f..7e0f70e48f 100644 --- a/lcl/include/wincontrol.inc +++ b/lcl/include/wincontrol.inc @@ -1653,10 +1653,13 @@ var CurChild: TAutoSizeBox; CurBorder: integer; LastChild: TAutoSizeBox; + HasChildWithoutMax: array [TAutoSizeBoxOrientation] of Boolean; begin if DoInit then InitSums; Orthogonal:=SizeBoxOrthogonal[Orientation]; if ChildCount[Orientation]>0 then begin + HasChildWithoutMax[asboHorizontal] := False; + HasChildWithoutMax[asboVertical] := False; for i:=0 to ChildCount[Orientation]-1 do begin CurChild:=Children[Orientation][i]; @@ -1671,22 +1674,28 @@ begin inc(MinimumSize[Orientation],CurBorder); inc(PreferredSize[Orientation],CurBorder); // add item size in Orientation - if MaximumSize[Orientation]>0 then begin - if CurChild.MaximumSize[Orientation]>0 then - inc(MaximumSize[Orientation],CurChild.MaximumSize[Orientation]) - else + if not HasChildWithoutMax[Orientation] then begin + if CurChild.MaximumSize[Orientation]>0 then begin + inc(MaximumSize[Orientation],CurChild.MaximumSize[Orientation]); + end + else begin MaximumSize[Orientation]:=0; + HasChildWithoutMax[Orientation] := True; + end; end; inc(MinimumSize[Orientation],CurChild.MinimumSize[Orientation]); inc(PreferredSize[Orientation],CurChild.PreferredSize[Orientation]); // maximize in Orthogonal - if MaximumSize[Orthogonal]>0 then begin - if CurChild.MaximumSize[Orthogonal]>0 then + if not HasChildWithoutMax[Orthogonal] then begin + if CurChild.MaximumSize[Orthogonal]>0 then begin MaximumSize[Orthogonal]:=Max(MaximumSize[Orthogonal], - CurChild.MaximumSize[Orthogonal]) - else + CurChild.MaximumSize[Orthogonal]); + end + else begin MaximumSize[Orthogonal]:=0; + HasChildWithoutMax[Orthogonal] := True; + end; end; MinimumSize[Orthogonal]:=Max(MinimumSize[Orthogonal], CurChild.MinimumSize[Orthogonal]);