added WithThemSpace parameter to GetPreferredSize

git-svn-id: trunk@9331 -
This commit is contained in:
mattias 2006-05-21 15:47:28 +00:00
parent 16ad053d50
commit e81c0f77a0
22 changed files with 141 additions and 95 deletions

View File

@ -1414,10 +1414,6 @@ begin
Caption := dlgCOChecks; Caption := dlgCOChecks;
ChildSizing.Layout:=cclTopToBottomThenLeftToRight; ChildSizing.Layout:=cclTopToBottomThenLeftToRight;
ChildSizing.ControlsPerLine:=2; ChildSizing.ControlsPerLine:=2;
ChildSizing.LeftRightSpacing:=6;
ChildSizing.TopBottomSpacing:=6;
ChildSizing.HorizontalSpacing:=6;
ChildSizing.VerticalSpacing:=6;
end; end;
chkChecksIO := TCheckBox.Create(Self); chkChecksIO := TCheckBox.Create(Self);
@ -1460,8 +1456,6 @@ begin
Width := 100; Width := 100;
Caption := dlgHeapSize +' (-Ch):'; Caption := dlgHeapSize +' (-Ch):';
ChildSizing.Layout:=cclTopToBottomThenLeftToRight; ChildSizing.Layout:=cclTopToBottomThenLeftToRight;
ChildSizing.LeftRightSpacing:=6;
ChildSizing.TopBottomSpacing:=6;
end; end;
edtHeapSize := TEdit.Create(grpHeapSize); edtHeapSize := TEdit.Create(grpHeapSize);
@ -1469,7 +1463,6 @@ begin
begin begin
Parent := grpHeapSize; Parent := grpHeapSize;
Caption := dlgHeapSize; Caption := dlgHeapSize;
BorderSpacing.Around:=3;
Text := ''; Text := '';
end; end;
@ -1485,9 +1478,6 @@ begin
Width := 150; Width := 150;
Caption := dlgCOGenerate; Caption := dlgCOGenerate;
ChildSizing.Layout:=cclLeftToRightThenTopToBottom; ChildSizing.Layout:=cclLeftToRightThenTopToBottom;
ChildSizing.LeftRightSpacing:=6;
ChildSizing.TopBottomSpacing:=6;
ChildSizing.VerticalSpacing:=6;
end; end;
radGenNormal := TRadioButton.Create(grpGenerate); radGenNormal := TRadioButton.Create(grpGenerate);
@ -1631,9 +1621,6 @@ begin
Width := 360; Width := 360;
Caption := dlgOptimiz; Caption := dlgOptimiz;
ChildSizing.Layout:=cclLeftToRightThenTopToBottom; ChildSizing.Layout:=cclLeftToRightThenTopToBottom;
ChildSizing.LeftRightSpacing:=6;
ChildSizing.TopBottomSpacing:=6;
ChildSizing.VerticalSpacing:=6;
AutoSize:=true; AutoSize:=true;
end; end;

View File

@ -132,7 +132,8 @@ type
procedure Loaded; override; procedure Loaded; override;
procedure UpdateHandleObject(PanelIndex: integer); virtual; procedure UpdateHandleObject(PanelIndex: integer); virtual;
procedure CalculatePreferredSize( procedure CalculatePreferredSize(
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
//added. //added.
function CreatePanel: TStatusPanel; virtual; function CreatePanel: TStatusPanel; virtual;

View File

@ -832,8 +832,8 @@ type
FParentFont: Boolean; FParentFont: Boolean;
FParentShowHint: Boolean; FParentShowHint: Boolean;
FPopupMenu: TPopupMenu; FPopupMenu: TPopupMenu;
FPreferredWidth: integer; FPreferredWidth: integer;// with theme space
FPreferredHeight: integer; FPreferredHeight: integer;// with theme space
FReadBounds: TRect; FReadBounds: TRect;
FSessionProperties: string; FSessionProperties: string;
FShowHint: Boolean; FShowHint: Boolean;
@ -922,7 +922,8 @@ type
procedure ConstrainedResize(var MinWidth, MinHeight, procedure ConstrainedResize(var MinWidth, MinHeight,
MaxWidth, MaxHeight: TConstraintSize); virtual; MaxWidth, MaxHeight: TConstraintSize); virtual;
procedure CalculatePreferredSize( procedure CalculatePreferredSize(
var PreferredWidth, PreferredHeight: integer); virtual; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); virtual;
procedure DoOnResize; virtual; procedure DoOnResize; virtual;
procedure DoOnChangeBounds; virtual; procedure DoOnChangeBounds; virtual;
procedure Resize; virtual; procedure Resize; virtual;
@ -1122,7 +1123,8 @@ type
procedure SetBoundsKeepBase(aLeft, aTop, aWidth, aHeight: integer; procedure SetBoundsKeepBase(aLeft, aTop, aWidth, aHeight: integer;
Lock: boolean = true); virtual; Lock: boolean = true); virtual;
procedure GetPreferredSize(var PreferredWidth, PreferredHeight: integer; procedure GetPreferredSize(var PreferredWidth, PreferredHeight: integer;
Raw: boolean = false); virtual; Raw: boolean = false;
WithThemeSpace: boolean = true); virtual;
procedure CNPreferredSizeChanged; procedure CNPreferredSizeChanged;
procedure InvalidatePreferredSize; virtual; procedure InvalidatePreferredSize; virtual;
function GetBoundsDependingOnParent(WithNormalAnchors: Boolean): TAnchors; function GetBoundsDependingOnParent(WithNormalAnchors: Boolean): TAnchors;
@ -1516,7 +1518,8 @@ type
procedure DoSetBounds(ALeft, ATop, AWidth, AHeight: integer); override; procedure DoSetBounds(ALeft, ATop, AWidth, AHeight: integer); override;
procedure DoAutoSize; override; procedure DoAutoSize; override;
procedure CalculatePreferredSize(var PreferredWidth, procedure CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer); override; PreferredHeight: integer;
WithThemeSpace: Boolean); override;
procedure GetChildBounds(var ChildBounds: TRect; WithBorderSpace: boolean); virtual; procedure GetChildBounds(var ChildBounds: TRect; WithBorderSpace: boolean); virtual;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
function ChildClassAllowed(ChildClass: TClass): boolean; override; function ChildClassAllowed(ChildClass: TClass): boolean; override;

View File

@ -805,7 +805,7 @@ end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
procedure TControl.CalculatePreferredSize(var PreferredWidth, procedure TControl.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer); PreferredHeight: integer; WithThemeSpace: Boolean);
Calculates the default/preferred width and height for a control, which is used Calculates the default/preferred width and height for a control, which is used
by the LCL autosizing algorithms as default size. Only positive values are by the LCL autosizing algorithms as default size. Only positive values are
@ -813,9 +813,14 @@ end;
instead. instead.
TWinControl overrides this and asks the interface for theme dependent values. TWinControl overrides this and asks the interface for theme dependent values.
See TWinControl.GetPreferredSize for more information. See TWinControl.GetPreferredSize for more information.
WithThemeSpace: If true, adds space for stacking. For example: TRadioButton
has a minimum size. But for staking multiple TRadioButtons there should be
some space around. This space is theme dependent, so it passed parameter to
the widgetset.
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TControl.CalculatePreferredSize(var PreferredWidth, procedure TControl.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer); PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
PreferredWidth:=0; PreferredWidth:=0;
PreferredHeight:=0; PreferredHeight:=0;
@ -3670,22 +3675,30 @@ end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
procedure TControl.GetPreferredSize( procedure TControl.GetPreferredSize(
var PreferredWidth, PreferredHeight: integer; Raw: boolean); var PreferredWidth, PreferredHeight: integer; Raw: boolean;
WithThemeSpace: Boolean);
Returns the default/preferred width and height for a control, which is used Returns the default/preferred width and height for a control, which is used
by the LCL autosizing algorithms as default size. Only positive values are by the LCL autosizing algorithms as default size. Only positive values are
valid. Negative or 0 are treated as undefined and the LCL uses other sizes valid. Negative or 0 are treated as undefined and the LCL uses other sizes
instead. instead.
If not Raw then the values will be adjusted by the constraints and undefined
values will be replaced by the current width and height. Raw: If not Raw then the values will be adjusted by the constraints and
undefined values will be replaced by the current width and height.
WithThemeSpace: If true, adds space for stacking. For example: TRadioButton
has a minimum size. But for staking multiple TRadioButtons there should be
some space around. This space is theme dependent, so it passed parameter to
the widgetset.
TWinControl overrides this and asks the interface for theme dependent values. TWinControl overrides this and asks the interface for theme dependent values.
See TWinControl.GetPreferredSize for more information. See TWinControl.GetPreferredSize for more information.
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TControl.GetPreferredSize(var PreferredWidth, procedure TControl.GetPreferredSize(var PreferredWidth,
PreferredHeight: integer; Raw: boolean); PreferredHeight: integer; Raw: boolean; WithThemeSpace: boolean);
begin begin
if not (cfPreferredSizeValid in FControlFlags) then begin if not (cfPreferredSizeValid in FControlFlags) then begin
CalculatePreferredSize(FPreferredWidth,FPreferredHeight); CalculatePreferredSize(FPreferredWidth,FPreferredHeight,WithThemeSpace);
Include(FControlFlags,cfPreferredSizeValid); Include(FControlFlags,cfPreferredSizeValid);
end; end;
PreferredWidth:=FPreferredWidth; PreferredWidth:=FPreferredWidth;

View File

@ -19,9 +19,9 @@
} }
procedure TCustomEdit.CalculatePreferredSize(var PreferredWidth, procedure TCustomEdit.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer); PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight); inherited CalculatePreferredSize(PreferredWidth,PreferredHeight,WithThemeSpace);
// ignore width // ignore width
PreferredWidth:=0; PreferredWidth:=0;
end; end;

View File

@ -131,9 +131,9 @@ begin
end; end;
procedure TStatusBar.CalculatePreferredSize(var PreferredWidth, procedure TStatusBar.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer); PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight); inherited CalculatePreferredSize(PreferredWidth,PreferredHeight,WithThemeSpace);
PreferredWidth:=0; PreferredWidth:=0;
if PreferredHeight<=0 then PreferredHeight:=25; if PreferredHeight<=0 then PreferredHeight:=25;
end; end;

View File

@ -1860,7 +1860,7 @@ begin
// autosize control to preferred size // autosize control to preferred size
if (not WidthIsFixed) or (not HeightIsFixed) then begin if (not WidthIsFixed) or (not HeightIsFixed) then begin
GetPreferredSize(PreferredWidth,PreferredHeight,false); GetPreferredSize(PreferredWidth,PreferredHeight);
//if ControlCount>0 then //if ControlCount>0 then
// DebugLn('TWinControl.DoAutoSize ',DbgSName(Self),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); // DebugLn('TWinControl.DoAutoSize ',DbgSName(Self),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight));
end else begin end else begin
@ -5595,7 +5595,7 @@ end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
procedure TWinControl.CalculatePreferredSize(var PreferredWidth, procedure TWinControl.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer); PreferredHeight: integer; WithThemeSpace" Boolean);
Calculates the default/preferred width and height for a TWinControl, which is Calculates the default/preferred width and height for a TWinControl, which is
used by the LCL autosizing algorithms as default size. Only positive values used by the LCL autosizing algorithms as default size. Only positive values
@ -5610,9 +5610,14 @@ end;
This value is independent of constraints and siblings, only the inner parts This value is independent of constraints and siblings, only the inner parts
are relevant. are relevant.
WithThemeSpace: If true, adds space for stacking. For example: TRadioButton
has a minimum size. But for staking multiple TRadioButtons there should be
some space around. This space is theme dependent, so it passed parameter to
the widgetset.
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TWinControl.CalculatePreferredSize(var PreferredWidth, procedure TWinControl.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer); PreferredHeight: integer; WithThemeSpace: Boolean);
var var
ChildBounds: TRect; ChildBounds: TRect;
NewClientWidth: Integer; NewClientWidth: Integer;
@ -5622,10 +5627,11 @@ var
NewWidth: Integer; NewWidth: Integer;
NewHeight: Integer; NewHeight: Integer;
begin begin
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight); inherited CalculatePreferredSize(PreferredWidth,PreferredHeight,WithThemeSpace);
if HandleAllocated then begin if HandleAllocated then begin
TWSWinControlClass(WidgetSetClass).GetPreferredSize(Self, TWSWinControlClass(WidgetSetClass).GetPreferredSize(Self,
PreferredWidth, PreferredHeight); PreferredWidth, PreferredHeight, WithThemeSpace);
if (PreferredWidth>0) then if (PreferredWidth>0) then
inc(PreferredWidth,BorderSpacing.InnerBorder*2); inc(PreferredWidth,BorderSpacing.InnerBorder*2);
if PreferredHeight>0 then if PreferredHeight>0 then
@ -5708,7 +5714,7 @@ begin
if a in FixatedAnchors then FixateSide(a); if a in FixatedAnchors then FixateSide(a);
if AControl.AutoSize then if AControl.AutoSize then
AControl.GetPreferredSize(ChildWidth,ChildHeight,false) AControl.GetPreferredSize(ChildWidth,ChildHeight)
else begin else begin
ChildWidth:=AControl.Width; ChildWidth:=AControl.Width;
ChildHeight:=AControl.Height; ChildHeight:=AControl.Height;

View File

@ -118,7 +118,7 @@ type
class procedure SetText(const AWinControl: TWinControl; const AText: String); override; class procedure SetText(const AWinControl: TWinControl; const AText: String); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override;
end; end;
{ TCarbonWSCustomMemo } { TCarbonWSCustomMemo }
@ -445,7 +445,8 @@ begin
CFRelease(Pointer(CFString)); CFRelease(Pointer(CFString));
end; end;
procedure TCarbonWSCustomEdit.GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer); procedure TCarbonWSCustomEdit.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
//TODO //TODO
end; end;

View File

@ -6182,7 +6182,7 @@ begin
end; end;
procedure GetGTKDefaultWidgetSize(AWinControl: TWinControl; procedure GetGTKDefaultWidgetSize(AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
Widget: PGtkWidget; Widget: PGtkWidget;
Requisition: TGtkRequisition; Requisition: TGtkRequisition;
@ -6194,6 +6194,9 @@ begin
gtk_widget_size_request(Widget,@Requisition); gtk_widget_size_request(Widget,@Requisition);
PreferredWidth:=Requisition.width; PreferredWidth:=Requisition.width;
PreferredHeight:=Requisition.height; PreferredHeight:=Requisition.height;
if not WithThemeSpace then begin
// TODO
end;
// set new size // set new size
gtk_widget_set_usize(Widget,AWinControl.Width,AWinControl.Height); gtk_widget_set_usize(Widget,AWinControl.Width,AWinControl.Height);
//debugln('GetGTKDefaultSize PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); //debugln('GetGTKDefaultSize PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight));

View File

@ -728,7 +728,7 @@ procedure SaveSizeNotification(Widget: PGtkWidget);
procedure SaveClientSizeNotification(FixWidget: PGtkWidget); procedure SaveClientSizeNotification(FixWidget: PGtkWidget);
function CreateTopologicalSortedWidgets(HashArray: TDynHashArray): TFPList; function CreateTopologicalSortedWidgets(HashArray: TDynHashArray): TFPList;
procedure GetGTKDefaultWidgetSize(AWinControl: TWinControl; procedure GetGTKDefaultWidgetSize(AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
Procedure ReportNotObsolete(const Texts: String); Procedure ReportNotObsolete(const Texts: String);

View File

@ -65,7 +65,8 @@ type
class procedure SetColor(const AWinControl: TWinControl); override; class procedure SetColor(const AWinControl: TWinControl); override;
class procedure SetFont(const AWinControl: TWinControl; const AFont : tFont); override; class procedure SetFont(const AWinControl: TWinControl; const AFont : tFont); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TGtkWSBitBtn } { TGtkWSBitBtn }
@ -234,9 +235,10 @@ end;
procedure TGtkWSButton.GetPreferredSize(const AWinControl: TWinControl; procedure TGtkWSButton.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight); GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight,
WithThemeSpace);
//debugln('TGtkWSButton.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); //debugln('TGtkWSButton.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight));
end; end;

View File

@ -51,7 +51,8 @@ type
class procedure SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer); override; class procedure SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer); override;
class procedure Update(const AStatusBar: TStatusBar); override; class procedure Update(const AStatusBar: TStatusBar); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TGtkWSTabSheet } { TGtkWSTabSheet }
@ -423,7 +424,7 @@ begin
end; end;
procedure TGtkWSStatusBar.GetPreferredSize(const AWinControl: TWinControl; procedure TGtkWSStatusBar.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
StatusBarWidget: PGtkWidget; StatusBarWidget: PGtkWidget;
Requisition: TGtkRequisition; Requisition: TGtkRequisition;

View File

@ -55,7 +55,8 @@ type
protected protected
public public
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TGtkWSGroupBox } { TGtkWSGroupBox }
@ -148,7 +149,8 @@ type
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override; class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
class procedure SetColor(const AWinControl: TWinControl); override; class procedure SetColor(const AWinControl: TWinControl); override;
end; end;
@ -204,7 +206,8 @@ type
class procedure SetAlignment(const ACustomStaticText: TCustomStaticText; class procedure SetAlignment(const ACustomStaticText: TCustomStaticText;
const NewAlignment: TAlignment); override; const NewAlignment: TAlignment); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TGtkWSStaticText } { TGtkWSStaticText }
@ -235,7 +238,8 @@ type
const OldShortCut, NewShortCut: TShortCut); override; const OldShortCut, NewShortCut: TShortCut); override;
class procedure SetState(const ACB: TCustomCheckBox; const ANewState: TCheckBoxState); override; class procedure SetState(const ACB: TCustomCheckBox; const ANewState: TCheckBoxState); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
class procedure SetFont(const AWinControl: TWinControl; const AFont : tFont); override; class procedure SetFont(const AWinControl: TWinControl; const AFont : tFont); override;
end; end;
@ -842,9 +846,10 @@ begin
end; end;
procedure TGtkWSCustomEdit.GetPreferredSize(const AWinControl: TWinControl; procedure TGtkWSCustomEdit.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight); GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight,
WithThemeSpace);
//debugln('TGtkWSCustomEdit.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); //debugln('TGtkWSCustomEdit.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight));
end; end;
@ -866,9 +871,10 @@ begin
end; end;
procedure TGtkWSCustomStaticText.GetPreferredSize(const AWinControl: TWinControl; procedure TGtkWSCustomStaticText.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight); GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight,
WithThemeSpace);
//debugln('TGtkWSCustomStaticText.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); //debugln('TGtkWSCustomStaticText.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight));
end; end;
@ -915,9 +921,10 @@ begin
end; end;
procedure TGtkWSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl; procedure TGtkWSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight); GetGTKDefaultWidgetSize(AWinControl,PreferredWidth,PreferredHeight,
WithThemeSpace);
//debugln('TGtkWSCustomCheckBox.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); //debugln('TGtkWSCustomCheckBox.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight));
end; end;
@ -1094,29 +1101,33 @@ end;
{ TGtkWSCustomGroupBox } { TGtkWSCustomGroupBox }
procedure TGtkWSCustomGroupBox.GetPreferredSize(const AWinControl: TWinControl; procedure TGtkWSCustomGroupBox.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
Widget: PGtkWidget; Widget: PGtkWidget;
border_width: Integer; border_width: Integer;
begin begin
Widget:=PGtkWidget(AWinControl.Handle); Widget:=PGtkWidget(AWinControl.Handle);
PreferredWidth := (gtk_widget_get_xthickness(Widget)) * 2
{$ifdef gtk1}
+PGtkFrame(Widget)^.label_width;
{$else}
+gtk_widget_get_xthickness(PGtkFrame(Widget)^.label_widget);
{$endif}
PreferredHeight := Max(gtk_widget_get_ythickness(Widget),
{$ifdef gtk1}
PGtkFrame(Widget)^.label_height)
{$else}
gtk_widget_get_ythickness(PGtkFrame(Widget)^.label_widget))
{$endif}
+ gtk_widget_get_ythickness(Widget);
if WithThemeSpace then begin
border_width:=(PGtkContainer(Widget)^.flag0 and bm_TGtkContainer_border_width) border_width:=(PGtkContainer(Widget)^.flag0 and bm_TGtkContainer_border_width)
shr bp_TGtkContainer_border_width; shr bp_TGtkContainer_border_width;
PreferredWidth := (border_width + gtk_widget_get_xthickness(Widget)) * 2 inc(PreferredWidth, border_width);
{$ifdef gtk1} inc(PreferredHeight,2*border_width);
+PGtkFrame(Widget)^.label_width; end;
{$else}
+gtk_widget_get_xthickness(PGtkFrame(Widget)^.label_widget);
{$endif}
PreferredHeight := Max(gtk_widget_get_ythickness(Widget),
{$ifdef gtk1}
PGtkFrame(Widget)^.label_height)
{$else}
gtk_widget_get_ythickness(PGtkFrame(Widget)^.label_widget))
{$endif}
+ gtk_widget_get_ythickness(Widget)
+ 2*border_width;
//debugln('TGtkWSCustomGroupBox.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); //debugln('TGtkWSCustomGroupBox.GetPreferredSize ',DbgSName(AWinControl),' PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight));
end; end;

View File

@ -1162,6 +1162,7 @@ begin
TQtDeviceContext(DC).setBrushOrigin(NewX, NewY); TQtDeviceContext(DC).setBrushOrigin(NewX, NewY);
if OldPoint <> nil then TQtDeviceContext(DC).brushOrigin(OldPoint); if OldPoint <> nil then TQtDeviceContext(DC).brushOrigin(OldPoint);
end; end;
Result:=0;
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------

View File

@ -57,7 +57,8 @@ type
class function CreateHandle(const AWinControl: TWinControl; class function CreateHandle(const AWinControl: TWinControl;
const AParams: TCreateParams): HWND; override; const AParams: TCreateParams): HWND; override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
class procedure SetBounds(const AWinControl: TWinControl; class procedure SetBounds(const AWinControl: TWinControl;
const ALeft, ATop, AWidth, AHeight: integer); override; const ALeft, ATop, AWidth, AHeight: integer); override;
class procedure SetFont(const AWinControl: TWinControl; const AFont: TFont); override; class procedure SetFont(const AWinControl: TWinControl; const AFont: TFont); override;
@ -471,7 +472,7 @@ begin
end; end;
procedure TWin32WSBitBtn.GetPreferredSize(const AWinControl: TWinControl; procedure TWin32WSBitBtn.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
BitmapInfo: BITMAP; // Buffer for bitmap BitmapInfo: BITMAP; // Buffer for bitmap
BitBtn: TBitBtn absolute AWinControl; BitBtn: TBitBtn absolute AWinControl;

View File

@ -55,7 +55,8 @@ type
class procedure SetBounds(const AWinControl: TWinControl; const ALeft, ATop, class procedure SetBounds(const AWinControl: TWinControl; const ALeft, ATop,
AWidth, AHeight: integer); override; AWidth, AHeight: integer); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TWin32WSTabSheet } { TWin32WSTabSheet }
@ -326,7 +327,7 @@ begin
end; end;
procedure TWin32WSStatusBar.GetPreferredSize(const AWinControl: TWinControl; procedure TWin32WSStatusBar.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
R: TRect; R: TRect;
begin begin

View File

@ -219,7 +219,8 @@ type
protected protected
public public
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TWin32WSCustomCheckBox } { TWin32WSCustomCheckBox }
@ -231,7 +232,8 @@ type
class function CreateHandle(const AWinControl: TWinControl; class function CreateHandle(const AWinControl: TWinControl;
const AParams: TCreateParams): HWND; override; const AParams: TCreateParams): HWND; override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
class function RetrieveState(const ACustomCheckBox: TCustomCheckBox): TCheckBoxState; override; class function RetrieveState(const ACustomCheckBox: TCustomCheckBox): TCheckBoxState; override;
class procedure SetShortCut(const ACustomCheckBox: TCustomCheckBox; class procedure SetShortCut(const ACustomCheckBox: TCustomCheckBox;
const OldShortCut, NewShortCut: TShortCut); override; const OldShortCut, NewShortCut: TShortCut); override;
@ -986,12 +988,16 @@ end;
{ TWin32WSButtonControl } { TWin32WSButtonControl }
procedure TWin32WSButtonControl.GetPreferredSize(const AWinControl: TWinControl; procedure TWin32WSButtonControl.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
if MeasureText(AWinControl, AWinControl.Caption, PreferredWidth, PreferredHeight) then if MeasureText(AWinControl, AWinControl.Caption, PreferredWidth, PreferredHeight) then
begin begin
Inc(PreferredWidth, 20); Inc(PreferredWidth, 20);
Inc(PreferredHeight, 12); Inc(PreferredHeight, 12);
if WithThemeSpace then begin
Inc(PreferredWidth, 6);
Inc(PreferredHeight, 6);
end;
end; end;
end; end;
@ -1020,7 +1026,7 @@ begin
end; end;
procedure TWin32WSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl; procedure TWin32WSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
iconHeight: integer; iconHeight: integer;
begin begin
@ -1031,6 +1037,10 @@ begin
iconHeight := GetSystemMetrics(SM_CYMENUCHECK); iconHeight := GetSystemMetrics(SM_CYMENUCHECK);
if iconHeight > PreferredHeight then if iconHeight > PreferredHeight then
PreferredHeight := iconHeight; PreferredHeight := iconHeight;
if WithThemeSpace then begin
Inc(PreferredWidth, 6);
Inc(PreferredHeight, 6);
end;
end; end;
end; end;

View File

@ -62,7 +62,8 @@ type
class function CreateHandle(const AWinControl: TWinControl; class function CreateHandle(const AWinControl: TWinControl;
const AParams: TCreateParams): HWND; const AParams: TCreateParams): HWND;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
class procedure SetBounds(const AWinControl: TWinControl; class procedure SetBounds(const AWinControl: TWinControl;
const ALeft, ATop, AWidth, AHeight: integer); override; const ALeft, ATop, AWidth, AHeight: integer); override;
class procedure SetFont(const AWinControl: TWinControl; const AFont: TFont); override; class procedure SetFont(const AWinControl: TWinControl; const AFont: TFont); override;
@ -532,7 +533,7 @@ end;
class procedure TWinCEWSBitBtn.GetPreferredSize(const AWinControl: TWinControl; class procedure TWinCEWSBitBtn.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
BitmapInfo: BITMAP; // Buffer for bitmap BitmapInfo: BITMAP; // Buffer for bitmap
BitBtn: TBitBtn absolute AWinControl; BitBtn: TBitBtn absolute AWinControl;

View File

@ -53,7 +53,8 @@ type
class procedure SetBounds(const AWinControl: TWinControl; const ALeft, ATop, class procedure SetBounds(const AWinControl: TWinControl; const ALeft, ATop,
AWidth, AHeight: integer); override; AWidth, AHeight: integer); override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TWinCEWSTabSheet } { TWinCEWSTabSheet }
@ -335,7 +336,7 @@ begin
end; end;
procedure TWinCEWSStatusBar.GetPreferredSize(const AWinControl: TWinControl; procedure TWinCEWSStatusBar.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
R: TRect; R: TRect;
begin begin

View File

@ -216,7 +216,8 @@ type
protected protected
public public
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
end; end;
{ TWinCEWSCustomCheckBox } { TWinCEWSCustomCheckBox }
@ -228,7 +229,8 @@ type
class function CreateHandle(const AWinControl: TWinControl; class function CreateHandle(const AWinControl: TWinControl;
const AParams: TCreateParams): HWND; override; const AParams: TCreateParams): HWND; override;
class procedure GetPreferredSize(const AWinControl: TWinControl; class procedure GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); override; var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
class function RetrieveState(const ACustomCheckBox: TCustomCheckBox): TCheckBoxState; override; class function RetrieveState(const ACustomCheckBox: TCustomCheckBox): TCheckBoxState; override;
class procedure SetShortCut(const ACustomCheckBox: TCustomCheckBox; class procedure SetShortCut(const ACustomCheckBox: TCustomCheckBox;
const OldShortCut, NewShortCut: TShortCut); override; const OldShortCut, NewShortCut: TShortCut); override;
@ -981,7 +983,7 @@ end;
{ TWin32WSButtonControl } { TWin32WSButtonControl }
procedure TWinCEWSButtonControl.GetPreferredSize(const AWinControl: TWinControl; procedure TWinCEWSButtonControl.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
if MeasureText(AWinControl, AWinControl.Caption, PreferredWidth, PreferredHeight) then if MeasureText(AWinControl, AWinControl.Caption, PreferredWidth, PreferredHeight) then
begin begin
@ -1021,7 +1023,7 @@ begin
end; end;
procedure TWinCEWSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl; procedure TWinCEWSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
var var
iconHeight: integer; iconHeight: integer;
begin begin

View File

@ -608,7 +608,8 @@ type
procedure SetPasswordChar(const AValue: Char); procedure SetPasswordChar(const AValue: Char);
procedure SetReadOnly(Value: Boolean); procedure SetReadOnly(Value: Boolean);
protected protected
procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer); override; procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer;
WithThemeSpace: Boolean); override;
procedure CreateWnd; override; procedure CreateWnd; override;
procedure TextChanged; override; procedure TextChanged; override;
procedure Change; dynamic; procedure Change; dynamic;

View File

@ -75,7 +75,7 @@ type
TWSWinControl = class(TWSControl) TWSWinControl = class(TWSControl)
class function GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; virtual; class function GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; virtual;
class function GetClientRect(const AWincontrol: TWinControl; var ARect: TRect): Boolean; virtual; class function GetClientRect(const AWincontrol: TWinControl; var ARect: TRect): Boolean; virtual;
class procedure GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer); virtual; class procedure GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual;
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; virtual; class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; virtual;
class function GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean; virtual; class function GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean; virtual;
@ -185,7 +185,7 @@ begin
end; end;
procedure TWSWinControl.GetPreferredSize(const AWinControl: TWinControl; procedure TWSWinControl.GetPreferredSize(const AWinControl: TWinControl;
var PreferredWidth, PreferredHeight: integer); var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin begin
end; end;