LCL, Toolbar: fix CalculatePreferredSize to honour constraints

This commit is contained in:
Martin 2024-12-28 18:29:32 +01:00
parent 924ce02d50
commit d9a5787be8

View File

@ -605,31 +605,26 @@ end;
procedure TToolBar.CalculatePreferredSize(var PreferredWidth, procedure TToolBar.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer; WithThemeSpace: Boolean); PreferredHeight: integer; WithThemeSpace: Boolean);
var var
NewWidth: Integer; AWidth: Integer;
NewHeight: Integer; NewWidth, NewHeight: Integer;
FixedWidth: Boolean;
begin begin
NewWidth:=0; NewWidth:=0;
NewHeight:=0; NewHeight:=0;
FixedWidth:=false;
if (Parent<>nil) if (Parent<>nil)
and (not Parent.AutoSize) and (not Parent.AutoSize)
and AnchorSideLeft.IsAnchoredToParent(akLeft) and AnchorSideLeft.IsAnchoredToParent(akLeft)
and AnchorSideRight.IsAnchoredToParent(akRight) then begin and AnchorSideRight.IsAnchoredToParent(akRight) then begin
// the width depends on the parent // the width depends on the parent
// the width is fixed // the width is fixed
FixedWidth:=true; AWidth:=Constraints.MinMaxWidth(Width);
WrapButtons(Width, NewWidth, NewHeight, True); end
PreferredWidth := NewWidth; else begin
PreferredHeight := NewHeight; AWidth:=Constraints.MinMaxWidth(Screen.Width);
//DebugLn(['TToolBar.CalculatePreferredSize fixed width: ',PreferredWidth,'x',PreferredHeight]);
end;
if not FixedWidth then begin
WrapButtons(Screen.Width,NewWidth,NewHeight,true);
PreferredWidth := NewWidth;
PreferredHeight := NewHeight;
end; end;
WrapButtons(AWidth,NewWidth,NewHeight,true);
PreferredWidth := NewWidth;
PreferredHeight := NewHeight;
//DebugLn(['TToolBar.CalculatePreferredSize ',DbgSName(Self),' ',PreferredWidth,'x',PreferredHeight,' Count=',ControlCount]); //DebugLn(['TToolBar.CalculatePreferredSize ',DbgSName(Self),' ',PreferredWidth,'x',PreferredHeight,' Count=',ControlCount]);
end; end;