mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-07 19:40:19 +02:00
gtk: move CreateComponent code for TPairSplitter, TScrollBox, TScrollBar to CreateHandle and FinishComponentCreate to SetCallbacks
git-svn-id: trunk@13467 -
This commit is contained in:
parent
d922bc6e85
commit
2f0de90ec1
@ -149,7 +149,6 @@ type
|
||||
function CreateComponentWidget(Sender: TObject; ACompStyle: Integer; const ACaption: String
|
||||
): PGtkWidget; virtual; // temporary solution till all are created through createhandle
|
||||
function CreateAPIWidget(AWinControl: TWinControl): PGtkWidget;
|
||||
function CreatePairSplitter(PairSplitterObject: TObject): PGtkWidget;
|
||||
function CreateStatusBar(StatusBar: TObject): PGtkWidget;
|
||||
function OldCreateStatusBarPanel(StatusBar: TObject; Index: integer): PGtkWidget;
|
||||
function CreateSimpleClientAreaWidget(Sender: TObject;
|
||||
|
@ -7648,7 +7648,7 @@ end;
|
||||
the client area is associated. If FormWidget=nil then the hbox will be used
|
||||
as main widget.
|
||||
-------------------------------------------------------------------------------}
|
||||
Function CreateFormContents(AForm: TCustomForm;
|
||||
function CreateFormContents(AForm: TCustomForm;
|
||||
var FormWidget: Pointer): Pointer;
|
||||
var
|
||||
ScrolledWidget, ClientAreaWidget: PGtkWidget;
|
||||
@ -7674,7 +7674,7 @@ begin
|
||||
//debugln('CreateFormContents Style=',GetStyleDebugReport(WindowStyle));
|
||||
gtk_container_add(PGtkContainer(ScrolledWidget), ClientAreaWidget);
|
||||
|
||||
gtk_object_set_data(FormWidget,odnScrollArea,ScrolledWidget);
|
||||
gtk_object_set_data(FormWidget, odnScrollArea, ScrolledWidget);
|
||||
|
||||
gtk_widget_show(ClientAreaWidget);
|
||||
SetFixedWidget(FormWidget, ClientAreaWidget);
|
||||
|
@ -4564,27 +4564,6 @@ begin
|
||||
BorderStyleShadowMap[TCustomControl(AWinControl).BorderStyle]);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
function TGtkWidgetSet.CreatePairSplitter(PairSplitterObject: TObject
|
||||
): PGtkWidget;
|
||||
|
||||
Create a TCustomPairSplitter widget set
|
||||
------------------------------------------------------------------------------}
|
||||
function TGtkWidgetSet.CreatePairSplitter(PairSplitterObject: TObject
|
||||
): PGtkWidget;
|
||||
var
|
||||
APairSplitter: TCustomPairSplitter;
|
||||
PanedWidget: PGtkWidget;
|
||||
begin
|
||||
APairSplitter:=TCustomPairSplitter(PairSplitterObject);
|
||||
// create the paned
|
||||
if APairSplitter.SplitterType=pstHorizontal then
|
||||
PanedWidget:=gtk_hpaned_new
|
||||
else
|
||||
PanedWidget:=gtk_vpaned_new;
|
||||
Result:=PanedWidget;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
function TGtkWidgetSet.CreateStatusBar(StatusBar: TObject): PGtkWidget;
|
||||
|
||||
@ -4731,9 +4710,7 @@ end;
|
||||
function TGTKWidgetSet.CreateComponentWidget(Sender: TObject; ACompStyle: Integer; const ACaption: String): PGtkWidget;
|
||||
var
|
||||
p: Pointer absolute Result;
|
||||
TempWidget,
|
||||
TempWidget2 : PGTKWidget; // pointer to gtk-widget (local use when neccessary)
|
||||
Adjustment: PGtkAdjustment;
|
||||
TempWidget: PGTKWidget; // pointer to gtk-widget (local use when neccessary)
|
||||
begin
|
||||
Result := nil;
|
||||
|
||||
@ -4764,12 +4741,6 @@ begin
|
||||
csWinControl: // code moved for TCustomControl
|
||||
p:=CreateAPIWidget(TWinControl(Sender));
|
||||
|
||||
csPairSplitter:
|
||||
p:=CreatePairSplitter(Sender);
|
||||
|
||||
csPairSplitterSide:
|
||||
P:=CreateSimpleClientAreaWidget(Sender,true);
|
||||
|
||||
csPreviewFileControl:
|
||||
P:=CreateSimpleClientAreaWidget(Sender,true);
|
||||
|
||||
@ -4782,20 +4753,6 @@ begin
|
||||
P := gtk_progress_bar_new_with_adjustment (PGtkAdjustment (TempWidget));
|
||||
end;
|
||||
|
||||
csScrollBar :
|
||||
begin
|
||||
Adjustment := PgtkAdjustment(
|
||||
gtk_adjustment_new(1,TScrollBar(sender).min,
|
||||
TScrollBar(sender).max,
|
||||
TScrollBar(sender).SmallChange, TScrollBar(sender).LargeChange,
|
||||
TScrollBar(sender).Pagesize));
|
||||
if (TScrollBar(sender).kind = sbHorizontal) then
|
||||
P := gtk_hscrollbar_new(Adjustment)
|
||||
else
|
||||
P := gtk_vscrollbar_new(Adjustment);
|
||||
gtk_object_set_data(PGTKObject(Adjustment), odnScrollBar, P);
|
||||
end;
|
||||
|
||||
csStatusBar :
|
||||
begin
|
||||
p:=CreateStatusBar(Sender);
|
||||
@ -4812,67 +4769,8 @@ begin
|
||||
P := gtk_vscale_new (PGTKADJUSTMENT (TempWidget));
|
||||
gtk_scale_set_digits (PGTKSCALE (P), 0);
|
||||
end;
|
||||
|
||||
csScrollBox :
|
||||
begin
|
||||
Assert(Sender is TScrollBox);
|
||||
|
||||
p := gtk_frame_new(nil);
|
||||
gtk_frame_set_shadow_type(pGtkFrame(p),GTK_SHADOW_IN);
|
||||
|
||||
TempWidget := gtk_scrolled_window_new(nil,nil);
|
||||
gtk_container_add(PGTKContainer(p), TempWidget);
|
||||
gtk_widget_show(TempWidget);
|
||||
|
||||
GTK_WIDGET_UNSET_FLAGS(PGtkScrolledWindow(TempWidget)^.hscrollbar, GTK_CAN_FOCUS);
|
||||
GTK_WIDGET_UNSET_FLAGS(PGtkScrolledWindow(TempWidget)^.vscrollbar, GTK_CAN_FOCUS);
|
||||
gtk_scrolled_window_set_policy(PGtkScrolledWindow(TempWidget),
|
||||
GTK_POLICY_NEVER,
|
||||
GTK_POLICY_NEVER);
|
||||
|
||||
gtk_object_set_data(P,odnScrollArea, TempWidget);
|
||||
|
||||
Adjustment := gtk_scrolled_window_get_vadjustment(PGTKScrolledWindow(TempWidget));
|
||||
if Adjustment <> nil
|
||||
then gtk_object_set_data(PGTKObject(Adjustment), odnScrollBar,
|
||||
PGTKScrolledWindow(TempWidget)^.vscrollbar);
|
||||
|
||||
Adjustment := gtk_scrolled_window_get_hadjustment(PGTKScrolledWindow(TempWidget));
|
||||
if Adjustment <> nil
|
||||
then gtk_object_set_data(PGTKObject(Adjustment), odnScrollBar,
|
||||
PGTKScrolledWindow(TempWidget)^.hscrollbar);
|
||||
|
||||
TempWidget2 := gtk_layout_new(nil, nil);
|
||||
gtk_container_add(PGTKContainer(TempWidget), TempWidget2);
|
||||
gtk_widget_show(TempWidget2);
|
||||
SetFixedWidget(p, TempWidget2);
|
||||
SetMainWidget(p, TempWidget2);
|
||||
|
||||
end;
|
||||
|
||||
// All obsoletes (some of them may still be in use for gtk1/gtk2, they are overridden there)
|
||||
csClistBox, csListBox, csCheckListBox,
|
||||
csArrow,
|
||||
csCalendar,
|
||||
csComboBox,
|
||||
csMemo,
|
||||
csSpinEdit,
|
||||
csStaticText,
|
||||
csPanel,
|
||||
csMenuItem,
|
||||
csListView,
|
||||
csHintWindow,
|
||||
csGroupBox,
|
||||
csForm,
|
||||
csEdit,
|
||||
csBitBtn,
|
||||
csButton,
|
||||
csToggleBox,
|
||||
csRadioButton,
|
||||
csPage,
|
||||
csPopupMenu,
|
||||
csCheckbox,
|
||||
csMainMenu: DebugLn('[WARNING] Obsolete call to TGTKOBject.CreateComponent for ', Sender.ClassName);
|
||||
else
|
||||
DebugLn('[WARNING] Obsolete call to TGTKOBject.CreateComponent for ', Sender.ClassName);
|
||||
end; //end case
|
||||
end;
|
||||
|
||||
|
@ -304,7 +304,10 @@ begin
|
||||
|
||||
Widget := PGtkWidget(AWinControl.Handle);
|
||||
if GtkWidgetIsA(Widget, GTKAPIWidget_GetType) then
|
||||
GTKAPIWidget_SetShadowType(PGTKAPIWidget(Widget), BorderStyleShadowMap[ABorderStyle]);
|
||||
GTKAPIWidget_SetShadowType(PGTKAPIWidget(Widget), BorderStyleShadowMap[ABorderStyle])
|
||||
else
|
||||
if GTK_IS_FRAME(Widget) then
|
||||
gtk_frame_set_shadow_type(PGtkFrame(Widget), BorderStyleShadowMap[ABorderStyle]);
|
||||
end;
|
||||
|
||||
class procedure TGtkWSWinControl.SetCallbacks(const AGTKObject: PGTKObject;
|
||||
|
@ -44,7 +44,9 @@ type
|
||||
TGtkWSScrollingWinControl = class(TWSScrollingWinControl)
|
||||
private
|
||||
protected
|
||||
class procedure SetCallbacks(const AWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual;
|
||||
public
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override;
|
||||
end;
|
||||
|
||||
@ -76,8 +78,8 @@ type
|
||||
|
||||
TGtkWSCustomForm = class(TWSCustomForm)
|
||||
private
|
||||
class procedure SetCallbacks(const AWinControl: TWinControl; const AWidgetInfo: PWidgetInfo); virtual;
|
||||
protected
|
||||
class procedure SetCallbacks(const AWinControl: TWinControl; const AWidgetInfo: PWidgetInfo); virtual;
|
||||
public
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
|
||||
@ -127,7 +129,61 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
{ TGtkWSCustomForm }
|
||||
class procedure TGtkWSScrollingWinControl.SetCallbacks(
|
||||
const AWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo);
|
||||
begin
|
||||
TGtkWSWinControl.SetCallbacks(PGtkObject(AWidget), TComponent(AWidgetInfo^.LCLObject));
|
||||
with TGTKWidgetSet(Widgetset) do
|
||||
begin
|
||||
SetCallback(LM_HSCROLL, PGtkObject(AWidget), AWidgetInfo^.LCLObject);
|
||||
SetCallback(LM_VSCROLL, PGtkObject(AWidget), AWidgetInfo^.LCLObject);
|
||||
end;
|
||||
end;
|
||||
|
||||
class function TGtkWSScrollingWinControl.CreateHandle(
|
||||
const AWinControl: TWinControl; const AParams: TCreateParams
|
||||
): TLCLIntfHandle;
|
||||
var
|
||||
Scrolled: PGtkScrolledWindow;
|
||||
Frame: PGtkFrame;
|
||||
Layout: PGtkWidget;
|
||||
WidgetInfo: PWidgetInfo;
|
||||
Adjustment: PGtkAdjustment;
|
||||
begin
|
||||
Frame := PGtkFrame(gtk_frame_new(nil));
|
||||
gtk_frame_set_shadow_type(Frame, BorderStyleShadowMap[TScrollingWinControl(AWinControl).BorderStyle]);
|
||||
Scrolled := PGtkScrolledWindow(gtk_scrolled_window_new(nil, nil));
|
||||
gtk_container_add(PGTKContainer(Frame), PGtkWidget(Scrolled));
|
||||
gtk_widget_show(PGtkWidget(Scrolled));
|
||||
|
||||
GTK_WIDGET_UNSET_FLAGS(Scrolled^.hscrollbar, GTK_CAN_FOCUS);
|
||||
GTK_WIDGET_UNSET_FLAGS(Scrolled^.vscrollbar, GTK_CAN_FOCUS);
|
||||
gtk_scrolled_window_set_policy(Scrolled, GTK_POLICY_NEVER, GTK_POLICY_NEVER);
|
||||
gtk_object_set_data(PGtkObject(Frame), odnScrollArea, Scrolled);
|
||||
|
||||
{$IFDEF DebugLCLComponents}
|
||||
DebugGtkWidgets.MarkCreated(Frame, dbgsName(AWinControl));
|
||||
{$ENDIF}
|
||||
|
||||
WidgetInfo := CreateWidgetInfo(Frame, AWinControl, AParams);
|
||||
|
||||
Adjustment := gtk_scrolled_window_get_vadjustment(Scrolled);
|
||||
if Adjustment <> nil then
|
||||
gtk_object_set_data(PGTKObject(Adjustment), odnScrollBar, Scrolled^.vscrollbar);
|
||||
|
||||
Adjustment := gtk_scrolled_window_get_hadjustment(Scrolled);
|
||||
if Adjustment <> nil then
|
||||
gtk_object_set_data(PGTKObject(Adjustment), odnScrollBar, Scrolled^.hscrollbar);
|
||||
|
||||
Layout := gtk_layout_new(nil, nil);
|
||||
gtk_container_add(PGTKContainer(Scrolled), Layout);
|
||||
gtk_widget_show(Layout);
|
||||
SetFixedWidget(Frame, Layout);
|
||||
SetMainWidget(Frame, Layout);
|
||||
|
||||
Result := TLCLIntfHandle(PtrUInt(Frame));
|
||||
SetCallBacks(PGtkWidget(Frame), WidgetInfo);
|
||||
end;
|
||||
|
||||
class procedure TGtkWSScrollingWinControl.ScrollBy(const AWinControl: TScrollingWinControl;
|
||||
const DeltaX, DeltaY: integer);
|
||||
|
@ -32,26 +32,31 @@ uses
|
||||
{$ELSE}
|
||||
Gtk, //Glib, Gdk,
|
||||
{$ENDIF}
|
||||
GtkWSPrivate,
|
||||
Controls, PairSplitter,
|
||||
GtkWSPrivate, GtkInt, GtkDef, GtkProc, GtkWSControls,
|
||||
Classes, Controls, LCLType, PairSplitter,
|
||||
WSPairSplitter, WSLCLClasses, WSProc;
|
||||
|
||||
type
|
||||
|
||||
{ TGtkWSPairSplitterSide }
|
||||
|
||||
TGtkWSPairSplitterSide = class(TWSPairSplitterSide)
|
||||
private
|
||||
protected
|
||||
protected
|
||||
class procedure SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual;
|
||||
public
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
end;
|
||||
|
||||
|
||||
{ TGtkWSCustomPairSplitter }
|
||||
|
||||
TGtkWSCustomPairSplitter = class(TWSCustomPairSplitter)
|
||||
private
|
||||
protected
|
||||
class procedure SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual;
|
||||
public
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
|
||||
class function AddSide(ASplitter: TCustomPairSplitter; ASide: TPairSplitterSide; Side: integer): Boolean; override;
|
||||
class function SetPosition(ASplitter: TCustomPairSplitter; var NewPosition: integer): Boolean; override;
|
||||
// special cursor handling
|
||||
@ -72,10 +77,39 @@ implementation
|
||||
|
||||
{ TGtkWSCustomPairSplitter }
|
||||
|
||||
class procedure TGtkWSCustomPairSplitter.SetCallbacks(
|
||||
const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo);
|
||||
begin
|
||||
TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
|
||||
end;
|
||||
|
||||
class function TGtkWSCustomPairSplitter.CreateHandle(
|
||||
const AWinControl: TWinControl; const AParams: TCreateParams
|
||||
): TLCLIntfHandle;
|
||||
var
|
||||
Widget: PGtkWidget;
|
||||
WidgetInfo: PWidgetInfo;
|
||||
begin
|
||||
// create the paned
|
||||
if TCustomPairSplitter(AWinControl).SplitterType = pstHorizontal then
|
||||
Widget := gtk_hpaned_new
|
||||
else
|
||||
Widget := gtk_vpaned_new;
|
||||
|
||||
{$IFDEF DebugLCLComponents}
|
||||
DebugGtkWidgets.MarkCreated(Widget, dbgsName(AWinControl));
|
||||
{$ENDIF}
|
||||
Result := TLCLIntfHandle(PtrUInt(Widget));
|
||||
|
||||
WidgetInfo := CreateWidgetInfo(Widget, AWinControl, AParams);
|
||||
|
||||
SetCallBacks(Widget, WidgetInfo);
|
||||
end;
|
||||
|
||||
class function TGtkWSCustomPairSplitter.AddSide(ASplitter: TCustomPairSplitter;
|
||||
ASide: TPairSplitterSide; Side: integer): Boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
Result := False;
|
||||
|
||||
if not (WSCheckHandleAllocated(ASplitter, 'AddSide - splitter') and
|
||||
WSCheckHandleAllocated(ASide, 'AddSide - side'))
|
||||
@ -83,24 +117,24 @@ begin
|
||||
|
||||
if (Side<0) or (Side>1) then exit;
|
||||
|
||||
if Side=0 then
|
||||
if Side = 0 then
|
||||
gtk_paned_add1(PGtkPaned(ASplitter.Handle),PGtkWidget(ASide.Handle))
|
||||
else
|
||||
gtk_paned_add2(PGtkPaned(ASPlitter.Handle),PGtkWidget(ASide.Handle));
|
||||
|
||||
Result:=true;
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
class function TGtkWSCustomPairSplitter.SetPosition(
|
||||
ASplitter: TCustomPairSplitter; var NewPosition: integer): Boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
Result := False;
|
||||
if not WSCheckHandleAllocated(ASplitter, 'SetPosition')
|
||||
then Exit;
|
||||
if NewPosition>=0 then
|
||||
gtk_paned_set_position(PGtkPaned(ASplitter.Handle),NewPosition);
|
||||
NewPosition:=PGtkPaned(ASplitter.Handle)^.child1_size;
|
||||
Result:=true;
|
||||
gtk_paned_set_position(PGtkPaned(ASplitter.Handle), NewPosition);
|
||||
NewPosition := PGtkPaned(ASplitter.Handle)^.child1_size;
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
class function TGtkWSCustomPairSplitter.GetSplitterCursor(
|
||||
@ -115,6 +149,36 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
{ TGtkWSPairSplitterSide }
|
||||
|
||||
class procedure TGtkWSPairSplitterSide.SetCallbacks(
|
||||
const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo);
|
||||
begin
|
||||
TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
|
||||
end;
|
||||
|
||||
class function TGtkWSPairSplitterSide.CreateHandle(
|
||||
const AWinControl: TWinControl; const AParams: TCreateParams
|
||||
): TLCLIntfHandle;
|
||||
var
|
||||
Widget: PGtkWidget;
|
||||
WidgetInfo: PWidgetInfo;
|
||||
begin
|
||||
Widget := GtkWidgetset.CreateSimpleClientAreaWidget(AWinControl, True);
|
||||
{$IFDEF DebugLCLComponents}
|
||||
DebugGtkWidgets.MarkCreated(Widget, dbgsName(AWinControl));
|
||||
{$ENDIF}
|
||||
Result := TLCLIntfHandle(PtrUInt(Widget));
|
||||
|
||||
WidgetInfo := GetWidgetInfo(Widget);
|
||||
WidgetInfo^.LCLObject := AWinControl;
|
||||
WidgetInfo^.Style := AParams.Style;
|
||||
WidgetInfo^.ExStyle := AParams.ExStyle;
|
||||
WidgetInfo^.WndProc := PtrUInt(AParams.WindowClass.lpfnWndProc);
|
||||
|
||||
SetCallBacks(Widget, WidgetInfo);
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
@ -123,7 +187,7 @@ initialization
|
||||
// To improve speed, register only classes
|
||||
// which actually implement something
|
||||
////////////////////////////////////////////////////
|
||||
// RegisterWSComponent(TPairSplitterSide, TGtkWSPairSplitterSide);
|
||||
RegisterWSComponent(TPairSplitterSide, TGtkWSPairSplitterSide);
|
||||
RegisterWSComponent(TCustomPairSplitter, TGtkWSCustomPairSplitter, TGtkPrivatePaned);
|
||||
// RegisterWSComponent(TPairSplitter, TGtkWSPairSplitter);
|
||||
////////////////////////////////////////////////////
|
||||
|
@ -28,7 +28,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Math,
|
||||
LCLType, LMessages, LCLProc, Controls, Graphics, StdCtrls,
|
||||
LCLType, LMessages, LCLProc, Controls, Graphics, StdCtrls, Forms,
|
||||
{$IFDEF gtk2}
|
||||
glib2, gdk2pixbuf, gdk2, gtk2, Pango, Gtk2WSPrivate,
|
||||
{$ELSE}
|
||||
@ -46,7 +46,9 @@ type
|
||||
TGtkWSScrollBar = class(TWSScrollBar)
|
||||
private
|
||||
protected
|
||||
class procedure SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual;
|
||||
public
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
class procedure SetParams(const AScrollBar: TCustomScrollBar); override;
|
||||
end;
|
||||
|
||||
@ -375,6 +377,45 @@ end;
|
||||
|
||||
{ TGtkWSScrollBar }
|
||||
|
||||
class procedure TGtkWSScrollBar.SetCallbacks(const AGtkWidget: PGtkWidget;
|
||||
const AWidgetInfo: PWidgetInfo);
|
||||
begin
|
||||
TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
|
||||
|
||||
if TScrollBar(AWidgetInfo^.LCLObject).Kind = sbHorizontal then
|
||||
TGtkWidgetset(Widgetset).SetCallback(LM_HSCROLL, PGtkObject(AGtkWidget), AWidgetInfo^.LCLObject)
|
||||
else
|
||||
TGtkWidgetset(Widgetset).SetCallback(LM_VSCROLL, PGtkObject(AGtkWidget), AWidgetInfo^.LCLObject);
|
||||
end;
|
||||
|
||||
class function TGtkWSScrollBar.CreateHandle(const AWinControl: TWinControl;
|
||||
const AParams: TCreateParams): TLCLIntfHandle;
|
||||
var
|
||||
Adjustment: PgtkAdjustment;
|
||||
Widget: PGtkWidget;
|
||||
WidgetInfo: PWidgetInfo;
|
||||
begin
|
||||
with TScrollBar(AWinControl) do
|
||||
begin
|
||||
Adjustment := PgtkAdjustment(
|
||||
gtk_adjustment_new(1, Min, Max, SmallChange, LargeChange,
|
||||
Pagesize));
|
||||
|
||||
if (Kind = sbHorizontal) then
|
||||
Widget := gtk_hscrollbar_new(Adjustment)
|
||||
else
|
||||
Widget := gtk_vscrollbar_new(Adjustment);
|
||||
end;
|
||||
gtk_object_set_data(PGTKObject(Adjustment), odnScrollBar, Widget);
|
||||
|
||||
Result := TLCLIntfHandle(PtrUInt(Widget));
|
||||
{$IFDEF DebugLCLComponents}
|
||||
DebugGtkWidgets.MarkCreated(Widget, dbgsName(AWinControl));
|
||||
{$ENDIF}
|
||||
WidgetInfo := CreateWidgetInfo(Pointer(Result), AWinControl, AParams);
|
||||
SetCallbacks(Widget, WidgetInfo);
|
||||
end;
|
||||
|
||||
class procedure TGtkWSScrollBar.SetParams(const AScrollBar: TCustomScrollBar);
|
||||
var
|
||||
Adjustment: PGtkAdjustment;
|
||||
|
@ -175,7 +175,7 @@ begin
|
||||
if GTK_IS_SCROLLED_WINDOW(Widget) then
|
||||
gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(Widget), BorderStyleShadowMap[ABorderStyle])
|
||||
else
|
||||
TWSWinControlClass(ClassParent).SetBorderStyle(AWinControl, ABorderStyle);
|
||||
TGtkWSWinControl{(ClassParent)}.SetBorderStyle(AWinControl, ABorderStyle);
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
Loading…
Reference in New Issue
Block a user