lcl: TWinControl: apply framewidth/height only to preferred clientarea, not to widget, bug #27538

git-svn-id: trunk@48017 -
This commit is contained in:
mattias 2015-02-26 14:40:13 +00:00
parent 59217ce6db
commit 673f7ce527

View File

@ -7987,7 +7987,7 @@ procedure TWinControl.CalculatePreferredSize(var PreferredWidth,
function IsVerbose: boolean;
begin
Result:=(ClassName='TShowCompilerOptionsDlg') or (Name='CmdLineMemo');
Result:=(Name='Edit1');
end;
{$ENDIF}
@ -8026,6 +8026,9 @@ begin
Layout.Free;
end;
// add clientarea frame
GetPreferredSizeClientFrame(FrameWidth,FrameHeight);
{$IF defined(VerboseAutoSize) or defined(VerboseAllAutoSize) or defined(VerboseCalculatePreferredSize)}
{$IFDEF VerboseCalculatePreferredSize}
if IsVerbose then
@ -8039,15 +8042,12 @@ begin
' Client=',ClientWidth,'x',ClientHeight,
' PrefClient=',NewClientWidth,'x',NewClientHeight]);
{$ENDIF}
PreferredWidth:=Max(PreferredWidth,NewClientWidth);
PreferredHeight:=Max(PreferredHeight,NewClientHeight);
if NewClientWidth>0 then
PreferredWidth:=Max(PreferredWidth,NewClientWidth+FrameWidth);
if NewClientHeight>0 then
PreferredHeight:=Max(PreferredHeight,NewClientHeight+FrameHeight);
end;
// add clientarea frame
GetPreferredSizeClientFrame(FrameWidth,FrameHeight);
PreferredWidth+=Max(0,FrameWidth);
PreferredHeight+=Max(0,FrameHeight);
// add borderspacing
if (PreferredWidth>0)
or ((PreferredWidth=0) and (csAutoSize0x0 in ControlStyle)) then