From 70b09d3d69a4415f47103252ea5ebf955fd358be Mon Sep 17 00:00:00 2001 From: mattias Date: Sun, 4 Jul 2010 05:13:32 +0000 Subject: [PATCH] LCL: computing preferred clientrect: fixed to use Child.GetDefaultWidth/Height and fixed GetDefaultWidth/Height to use BaseBounds only if size is fixed git-svn-id: trunk@26451 - --- lcl/include/control.inc | 10 +++++++--- lcl/include/wincontrol.inc | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lcl/include/control.inc b/lcl/include/control.inc index 5819757243..1a6fce12f3 100644 --- a/lcl/include/control.inc +++ b/lcl/include/control.inc @@ -4612,13 +4612,15 @@ end; ------------------------------------------------------------------------------} function TControl.GetDefaultWidth: integer; begin - if cfBaseBoundsValid in FControlFlags then + if AutoSize or WidthIsAnchored then + Result := GetControlClassDefaultSize.cx + else if cfBaseBoundsValid in FControlFlags then Result := FBaseBounds.Right - FBaseBounds.Left else if cfWidthLoaded in FControlFlags then Result := FReadBounds.Right - FReadBounds.Left else - Result := GetControlClassDefaultSize.CX; + Result := GetControlClassDefaultSize.cx; end; {------------------------------------------------------------------------------ @@ -4629,7 +4631,9 @@ end; ------------------------------------------------------------------------------} function TControl.GetDefaultHeight: integer; begin - if cfBaseBoundsValid in FControlFlags then + if AutoSize or HeightIsAnchored then + Result := GetControlClassDefaultSize.cy + else if cfBaseBoundsValid in FControlFlags then Result := BaseBounds.Bottom - BaseBounds.Top else if cfHeightLoaded in FControlFlags then diff --git a/lcl/include/wincontrol.inc b/lcl/include/wincontrol.inc index b544810dbc..116e57a377 100644 --- a/lcl/include/wincontrol.inc +++ b/lcl/include/wincontrol.inc @@ -1038,7 +1038,7 @@ procedure TAutoSizeCtrlData.ComputePreferredClientArea( or ((CurPreferredWidth=0) and (csAutoSize0x0 in Child.ControlStyle)) then NewWidth:=CurPreferredWidth else - NewWidth:=Max(1,Child.GetControlClassDefaultSize.cx); + NewWidth:=Max(1,Child.GetDefaultWidth); NewWidth:=Child.Constraints.MinMaxWidth(NewWidth); if UseCurrentHeight then @@ -1047,7 +1047,7 @@ procedure TAutoSizeCtrlData.ComputePreferredClientArea( or ((CurPreferredHeight=0) and (csAutoSize0x0 in Child.ControlStyle)) then NewHeight:=CurPreferredHeight else - NewHeight:=Max(1,Child.GetControlClassDefaultSize.cy); + NewHeight:=Max(1,Child.GetDefaultHeight); NewHeight:=Child.Constraints.MinMaxHeight(NewHeight); end else begin NewWidth:=0;