mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 12:00:02 +02:00
gtk: move CreateComponent code for TArrow to CreateHandle and FinishComponentCreate to SetCallbacks
git-svn-id: trunk@13458 -
This commit is contained in:
parent
07cb989050
commit
eaa55af861
@ -4744,15 +4744,6 @@ begin
|
|||||||
gtk_widget_show(p);
|
gtk_widget_show(p);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
csArrow :
|
|
||||||
begin
|
|
||||||
P := gtk_event_box_new();
|
|
||||||
TempWidget := gtk_arrow_new(gtk_arrow_left, gtk_shadow_etched_in);
|
|
||||||
gtk_container_add(p, TempWidget);
|
|
||||||
gtk_widget_show(TempWidget);
|
|
||||||
gtk_object_set_data(P, 'arrow', TempWidget);
|
|
||||||
end;
|
|
||||||
|
|
||||||
csCalendar :
|
csCalendar :
|
||||||
begin
|
begin
|
||||||
p := gtk_frame_new(nil);
|
p := gtk_frame_new(nil);
|
||||||
@ -4898,6 +4889,7 @@ begin
|
|||||||
|
|
||||||
// All obsoletes (some of them may still be in use for gtk1/gtk2, they are overridden there)
|
// All obsoletes (some of them may still be in use for gtk1/gtk2, they are overridden there)
|
||||||
csClistBox, csListBox, csCheckListBox,
|
csClistBox, csListBox, csCheckListBox,
|
||||||
|
csArrow,
|
||||||
csComboBox,
|
csComboBox,
|
||||||
csMemo,
|
csMemo,
|
||||||
csSpinEdit,
|
csSpinEdit,
|
||||||
|
@ -32,52 +32,88 @@ uses
|
|||||||
{$ELSE}
|
{$ELSE}
|
||||||
glib, gdk, gtk, gdkpixbuf, GtkFontCache,
|
glib, gdk, gtk, gdkpixbuf, GtkFontCache,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Arrow, WSArrow, WSLCLClasses;
|
Classes, Controls, Arrow, LCLType,
|
||||||
|
WSArrow, WSLCLClasses,
|
||||||
|
GtkDef, GtkProc, GtkWsControls;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TGtkWSArrow }
|
{ TGtkWSArrow }
|
||||||
|
|
||||||
TGtkWSArrow = class(TWSArrow)
|
TGtkWSArrow = class(TWSArrow)
|
||||||
private
|
private
|
||||||
protected
|
protected
|
||||||
|
class procedure SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual;
|
||||||
public
|
public
|
||||||
class procedure SetType(const AArrow: TArrow; const AArrowType: TArrowType;
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||||
|
class procedure SetType(const AArrow: TArrow; const AArrowType: TArrowType;
|
||||||
const AShadowType: TShadowType); override;
|
const AShadowType: TShadowType); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
const
|
||||||
|
LCLToGTKArrowTypeMap: array[TArrowType] of TGtkArrowType =
|
||||||
|
(
|
||||||
|
{ atUp } GTK_ARROW_UP,
|
||||||
|
{ atDown } GTK_ARROW_DOWN,
|
||||||
|
{ atLeft } GTK_ARROW_LEFT,
|
||||||
|
{ atRight} GTK_ARROW_RIGHT
|
||||||
|
);
|
||||||
|
|
||||||
|
LCLToGTKShadowTypeMap: array[TShadowType] of TGtkShadowType =
|
||||||
|
(
|
||||||
|
{ stNone } GTK_SHADOW_NONE,
|
||||||
|
{ stIn } GTK_SHADOW_IN,
|
||||||
|
{ stOut } GTK_SHADOW_OUT,
|
||||||
|
{ stEtchedIn } GTK_SHADOW_ETCHED_IN,
|
||||||
|
{ stEtchedOut} GTK_SHADOW_ETCHED_OUT
|
||||||
|
);
|
||||||
|
|
||||||
{ TGtkWSArrow }
|
{ TGtkWSArrow }
|
||||||
|
|
||||||
|
class procedure TGtkWSArrow.SetCallbacks(const AGtkWidget: PGtkWidget;
|
||||||
|
const AWidgetInfo: PWidgetInfo);
|
||||||
|
begin
|
||||||
|
TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TGtkWSArrow.CreateHandle(const AWinControl: TWinControl;
|
||||||
|
const AParams: TCreateParams): TLCLIntfHandle;
|
||||||
|
var
|
||||||
|
EventBox, ArrowWidget: PGtkWidget;
|
||||||
|
WidgetInfo: PWidgetInfo;
|
||||||
|
Allocation: TGtkAllocation;
|
||||||
|
begin
|
||||||
|
EventBox := gtk_event_box_new();
|
||||||
|
ArrowWidget := gtk_arrow_new(gtk_arrow_left, gtk_shadow_etched_in);
|
||||||
|
gtk_container_add(PGtkContainer(EventBox), ArrowWidget);
|
||||||
|
gtk_widget_show_all(EventBox);
|
||||||
|
|
||||||
|
Result := TLCLIntfHandle(PtrUInt(EventBox));
|
||||||
|
{$IFDEF DebugLCLComponents}
|
||||||
|
DebugGtkWidgets.MarkCreated(EventBox, dbgsName(AWinControl));
|
||||||
|
{$ENDIF}
|
||||||
|
WidgetInfo := CreateWidgetInfo(Pointer(Result), AWinControl, AParams);
|
||||||
|
|
||||||
|
Allocation.X := AParams.X;
|
||||||
|
Allocation.Y := AParams.Y;
|
||||||
|
Allocation.Width := AParams.Width;
|
||||||
|
Allocation.Height := AParams.Height;
|
||||||
|
gtk_widget_size_allocate(PGtkWidget(Result), @Allocation);
|
||||||
|
|
||||||
|
SetCallBacks(EventBox, WidgetInfo);
|
||||||
|
end;
|
||||||
|
|
||||||
class procedure TGtkWSArrow.SetType(const AArrow: TArrow; const AArrowType: TArrowType;
|
class procedure TGtkWSArrow.SetType(const AArrow: TArrow; const AArrowType: TArrowType;
|
||||||
const AShadowType: TShadowType);
|
const AShadowType: TShadowType);
|
||||||
var
|
var
|
||||||
ArrowType : TGTKArrowType;
|
ArrowWidget: PGtkWidget;
|
||||||
ShadowType : TGTKShadowType;
|
|
||||||
ArrowWidget: PGtkArrow;
|
|
||||||
begin
|
begin
|
||||||
case AArrowType of
|
ArrowWidget := PGtkBin(AArrow.Handle)^.child;
|
||||||
atUp: ArrowType := GTK_ARROW_UP;
|
|
||||||
atLeft: ArrowType := GTK_ARROW_LEFT;
|
|
||||||
atRight: ArrowType := GTK_ARROW_RIGHT;
|
|
||||||
else
|
|
||||||
ArrowType := GTK_ARROW_DOWN;
|
|
||||||
end;
|
|
||||||
|
|
||||||
case AShadowType of
|
gtk_arrow_set(PGtkArrow(ArrowWidget),
|
||||||
stNONE : ShadowType := GTK_SHADOW_NONE;
|
LCLToGTKArrowTypeMap[AArrowType],
|
||||||
stIN : ShadowType := GTK_SHADOW_IN;
|
LCLToGTKShadowTypeMap[AShadowType]);
|
||||||
stOut : ShadowType := GTK_SHADOW_OUT;
|
|
||||||
stEtchedIn : ShadowType := GTK_SHADOW_ETCHED_IN;
|
|
||||||
stEtchedOut : ShadowType := GTK_SHADOW_ETCHED_OUT;
|
|
||||||
else
|
|
||||||
ShadowType := GTK_SHADOW_NONE;
|
|
||||||
end;
|
|
||||||
|
|
||||||
ArrowWidget := gtk_object_get_data(PGtkObject(AArrow.Handle), 'arrow');
|
|
||||||
gtk_arrow_set(ArrowWidget, ArrowType, ShadowType);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
Loading…
Reference in New Issue
Block a user