From 94f6a1142d4358e48b9e6fea7c804328fa4664ae Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 22 Jan 2005 23:53:43 +0000 Subject: [PATCH] fixed gtk2 intf from Peter Vreman git-svn-id: trunk@6667 - --- examples/sprites/spriteexample.lpi | 6 +++--- lcl/interfaces/gtk/gtkcallback.inc | 21 ++++++++++++++++++++- lcl/interfaces/gtk/gtkproc.inc | 14 ++++++++++++++ lcl/interfaces/gtk/gtkwinapi.inc | 5 ++++- lcl/interfaces/gtk/gtkwinapiwindow.pp | 15 +++++++++++++++ lcl/interfaces/gtk/gtkwsstdctrls.pp | 16 ++++++++++++---- lcl/interfaces/gtk2/gtk2int.pas | 7 +++++-- lcl/interfaces/gtk2/gtk2object.inc | 8 ++++++++ 8 files changed, 81 insertions(+), 11 deletions(-) diff --git a/examples/sprites/spriteexample.lpi b/examples/sprites/spriteexample.lpi index 13bebdab8e..052ef3d340 100644 --- a/examples/sprites/spriteexample.lpi +++ b/examples/sprites/spriteexample.lpi @@ -19,10 +19,10 @@ - + - + @@ -31,7 +31,7 @@ - + diff --git a/lcl/interfaces/gtk/gtkcallback.inc b/lcl/interfaces/gtk/gtkcallback.inc index ec875b2453..338f7bec89 100644 --- a/lcl/interfaces/gtk/gtkcallback.inc +++ b/lcl/interfaces/gtk/gtkcallback.inc @@ -379,7 +379,7 @@ begin EventTrace('toggled', data); if LockOnChange(PgtkObject(Widget),0) > 0 then Exit; - if GtkWidgetIsA(Widget,GTK_TOGGLE_BUTTON_TYPE) then begin + if GtkWidgetIsA(Widget,gtk_toggle_button_get_type) then begin gtk_object_set_data(PgtkObject(Widget), 'Grayed', nil); end; @@ -2491,7 +2491,11 @@ begin Assert(False, Format('Trace:[GTKHScrollCB] Value: %d', [RoundToInt(Adjustment^.Value)])); Scroll := PgtkRange(gtk_object_get_data(PGTKObject(Adjustment), 'ScrollBar')); if Scroll=nil then exit; +{$ifdef gtk1} RangeClass := PgtkRangeClass(PgtkObject(Scroll)^.klass); +{$else} + RangeClass := GTK_OBJECT_GET_CLASS(Scroll); +{$endif} UpdatePolicy := gtk_range_get_update_policy(Scroll); //X := integer(gtk_object_get_data(PGtkObject(Scroll), 'FinalEvent')); //WriteLn('FINAL EVENT: ', X); @@ -2506,6 +2510,7 @@ begin with Msg do begin pos := Round(Adjustment^.Value); ScrollBar := HWND(Scroll); +{$ifdef gtk1} case Scroll_type(Scroll^) of GTK_SCROLL_NONE: begin @@ -2534,6 +2539,9 @@ begin ScrollCode := SB_THUMBPOSITION; end; end; +{$else} + {$warning gtk2 TODO} +{$endif} end; DeliverMessage(Data, Msg); end; @@ -2551,7 +2559,11 @@ begin Assert(False, Format('Trace:[GTKVScrollCB] Value: %d', [RoundToInt(Adjustment^.Value)])); Scroll := PgtkRange(gtk_object_get_data(PGTKObject(Adjustment), 'ScrollBar')); if (Scroll=nil) then exit; +{$ifdef gtk1} RangeClass := PgtkRangeClass(PgtkObject(Scroll)^.klass); +{$else} + RangeClass := GTK_OBJECT_GET_CLASS(Scroll); +{$endif} UpdatePolicy := gtk_range_get_update_policy(Scroll); //UpdatePolicy := TGtkUpdateType( gtk_object_get_data(PgtkObject(Scroll), 'UpdatePolicy')); //WriteLn('FINAL EVENT: ', integer(gtk_object_get_data(PGtkObject(Scroll), 'FinalEvent'))); @@ -2566,6 +2578,7 @@ begin with Msg do begin pos := Round(Adjustment^.Value); ScrollBar := HWND(Scroll); +{$ifdef gtk1} case Scroll_type(Scroll^) of GTK_SCROLL_NONE: begin @@ -2594,6 +2607,9 @@ begin ScrollCode := SB_THUMBPOSITION; end; end; +{$else} + {$warning gtk2 TODO} +{$endif} end; DeliverMessage(Data, Msg); end; @@ -2969,6 +2985,9 @@ end; { ============================================================================= $Log$ + Revision 1.260 2005/01/22 23:53:43 mattias + fixed gtk2 intf from Peter Vreman + Revision 1.259 2005/01/22 22:26:16 mattias added sprite example diff --git a/lcl/interfaces/gtk/gtkproc.inc b/lcl/interfaces/gtk/gtkproc.inc index 6c0c5029d5..f9eafc139e 100644 --- a/lcl/interfaces/gtk/gtkproc.inc +++ b/lcl/interfaces/gtk/gtkproc.inc @@ -814,8 +814,12 @@ begin Result:=Result+' rc_style=nil'; end else begin Result:=Result+' rc_style=['; +{$IFDEF GTK1} Result:=Result+ARCStyle^.font_name+','; Result:=Result+ARCStyle^.fontset_name+','; +{$ELSE GTK1} + {$WARNING TODO find GTK2 font naming} +{$ENDIF GTK1} Result:=Result+']'; end; end; @@ -7359,13 +7363,20 @@ begin gtk_widget_modify_style(Widget,RCStyle); if FreeFontName then begin +{$ifdef gtk1} g_free(RCStyle^.font_name); RCStyle^.font_name:=nil; +{$else} + pango_font_description_free(RCStyle^.font_desc); + RCStyle^.font_desc:=nil; +{$endif} end; +{$ifdef gtk1} if FreeFontSetName then begin g_free(RCStyle^.fontset_name); RCStyle^.fontset_name:=nil; end; +{$endif} //DebugLn('UpdateWidgetStyleOfControl END ',DbgSName(AWinControl),' Widget=',GetWidgetDebugReport(Widget),' Style=',GetWidgetStyleReport(Widget)); gtk_rc_style_unref(RCStyle); end; @@ -7912,6 +7923,9 @@ end; { ============================================================================= $Log$ + Revision 1.329 2005/01/22 23:53:43 mattias + fixed gtk2 intf from Peter Vreman + Revision 1.328 2005/01/16 11:40:10 mattias fixed TGtkWidgetSet.ExtSelectClipRGN for DCOrigin diff --git a/lcl/interfaces/gtk/gtkwinapi.inc b/lcl/interfaces/gtk/gtkwinapi.inc index 7c094a9b22..c67ba6466a 100644 --- a/lcl/interfaces/gtk/gtkwinapi.inc +++ b/lcl/interfaces/gtk/gtkwinapi.inc @@ -4060,7 +4060,7 @@ begin Result := 0; end else begin gdk_gc_get_values(GC, @Values); - result := GdkFunctionToROP2Mode( Values.thefunction ) + result := GdkFunctionToROP2Mode( Values.{$ifdef gtk1}thefunction{$else}_function{$endif} ) end; end; end; @@ -8857,6 +8857,9 @@ end; { ============================================================================= $Log$ + Revision 1.388 2005/01/22 23:53:43 mattias + fixed gtk2 intf from Peter Vreman + Revision 1.387 2005/01/17 16:42:35 mattias improved TLabel autosizing diff --git a/lcl/interfaces/gtk/gtkwinapiwindow.pp b/lcl/interfaces/gtk/gtkwinapiwindow.pp index f7701290b8..7f5d7ee8c6 100644 --- a/lcl/interfaces/gtk/gtkwinapiwindow.pp +++ b/lcl/interfaces/gtk/gtkwinapiwindow.pp @@ -165,7 +165,11 @@ function GTKAPIWidgetClient_FocusOut(AWidget: PGTKWidget; Event: PGdkEventFocus): GTKEventResult; cdecl; forward; procedure GTKAPIWidgetClient_ClassInit(theClass: Pointer);cdecl; forward; +{$ifdef gtk2} +procedure GTKAPIWidgetClient_Init(Client:PGTypeInstance; theClass: Pointer); cdecl; forward; +{$else} procedure GTKAPIWidgetClient_Init(Client, theClass: Pointer); cdecl; forward; +{$endif} function GTKAPIWidgetClient_GetType: Guint; forward; function GTKAPIWidgetClient_New: PGTKWidget; forward; @@ -268,7 +272,11 @@ begin end; end; +{$ifdef gtk2} +procedure GTKAPIWidgetClient_Init(Client:PGTypeInstance; theClass: Pointer); cdecl; +{$else} procedure GTKAPIWidgetClient_Init(Client, theClass: Pointer); cdecl; +{$endif} // Client: PGTKAPIWidgetClient // theClass: PGTKAPIWidgetClientClass begin @@ -922,7 +930,11 @@ begin WidgetClass^.focus_out_event := @GTKAPIWidget_FocusOut; end; +{$ifdef gtk2} +procedure GTKAPIWidget_Init(waw:PGTypeInstance; theClass: Pointer); cdecl; +{$else} procedure GTKAPIWidget_Init(waw, theClass: Pointer); cdecl; +{$endif} // waw: PGTKAPIWidget; // theClass: PGTKAPIWidgetClass var @@ -1110,6 +1122,9 @@ end. { ============================================================================= $Log$ + Revision 1.66 2005/01/22 23:53:43 mattias + fixed gtk2 intf from Peter Vreman + Revision 1.65 2004/08/30 15:47:29 mazen * Fix parameters in function call diff --git a/lcl/interfaces/gtk/gtkwsstdctrls.pp b/lcl/interfaces/gtk/gtkwsstdctrls.pp index 6b4dae00ab..b269840aeb 100644 --- a/lcl/interfaces/gtk/gtkwsstdctrls.pp +++ b/lcl/interfaces/gtk/gtkwsstdctrls.pp @@ -504,13 +504,13 @@ begin if Handle<>0 then begin Widget:=GetWidgetInfo(Pointer(Handle),True)^.CoreWidget; - if GtkWidgetIsA(Widget,GTK_LIST_TYPE) then begin + if GtkWidgetIsA(Widget,gtk_list_get_type) then begin if AIndex >= 0 then begin gtk_list_select_item(PGtkList(Widget), AIndex) end else gtk_list_unselect_all(PGtkList(Widget)); - end else if GtkWidgetIsA(Widget,GTK_CLIST_TYPE) then begin + end else if GtkWidgetIsA(Widget,gtk_clist_get_type) then begin gtk_clist_select_row(PGtkCList(Widget), AIndex, 1); // column end else raise Exception.Create(''); @@ -953,9 +953,17 @@ begin border_width:=(PGtkContainer(Widget)^.flag0 and bm_TGtkContainer_border_width) shr bp_TGtkContainer_border_width; PreferredWidth := (border_width + gtk_widget_get_xthickness(Widget)) * 2 +{$ifdef gtk1} +PGtkFrame(Widget)^.label_width; - PreferredHeight := Max(PGtkFrame(Widget)^.label_height, - gtk_widget_get_ythickness(Widget)) +{$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)); diff --git a/lcl/interfaces/gtk2/gtk2int.pas b/lcl/interfaces/gtk2/gtk2int.pas index f65fbbae98..c995ac1857 100644 --- a/lcl/interfaces/gtk2/gtk2int.pas +++ b/lcl/interfaces/gtk2/gtk2int.pas @@ -56,11 +56,11 @@ type //function IntSendMessage3(LM_Message : Integer; Sender : TObject; data : pointer) : integer; override; function LoadStockPixmap(StockID: longint) : HBitmap; override; procedure SetCallback(const AMsg: LongInt; const AGTKObject: PGTKObject; const ALCLObject: TObject);override; - procedure SetLabel(Sender : TObject; Data : Pointer); + //procedure SetLabel(Sender : TObject; Data : Pointer); //function SetProperties(Sender : TObject) : integer; override; procedure SetSelectionMode(Sender: TObject; Widget: PGtkWidget; MultiSelect, ExtendedSelect: boolean); override; - function SetTopIndex(Sender: TObject; NewTopIndex: integer): integer; override; + //function SetTopIndex(Sender: TObject; NewTopIndex: integer): integer; override; procedure UpdateDCTextMetric(DC: TDeviceContext); override; public function BeginPaint(Handle: hWnd; Var PS : TPaintStruct) : hdc; override; @@ -594,6 +594,9 @@ end. { $Log$ + Revision 1.36 2005/01/22 23:53:43 mattias + fixed gtk2 intf from Peter Vreman + Revision 1.35 2004/09/30 10:35:50 mazen * Fix compile probelem under GTK2 related to THandle <--> Pointer conversion diff --git a/lcl/interfaces/gtk2/gtk2object.inc b/lcl/interfaces/gtk2/gtk2object.inc index ef04473902..bc2064609d 100644 --- a/lcl/interfaces/gtk2/gtk2object.inc +++ b/lcl/interfaces/gtk2/gtk2object.inc @@ -965,6 +965,7 @@ begin Result := HBitmap(Pixmap); end; +(* {------------------------------------------------------------------------------ Method: TGtk2WidgetSet.SetLabel Params: sender - the calling object @@ -1059,6 +1060,8 @@ begin end; Assert(False, Format('trace: [TGtk2WidgetSet.SetLabel] %s --> END', [Sender.ClassName])); end; +*) + {------------------------------------------------------------------------------ Method: TGtk2WidgetSet.SetProperties @@ -1200,6 +1203,7 @@ begin end; end; +(* {------------------------------------------------------------------------------ function TGtk2WidgetSet.SetTopIndex(Sender: TObject; NewTopIndex: integer ): integer; @@ -1241,6 +1245,7 @@ begin end; end; end; +*) {------------------------------------------------------------------------------ procedure TGtk2WidgetSet.UpdateDCTextMetric(DC: TDeviceContext); @@ -1375,6 +1380,9 @@ end; { ============================================================================= $Log$ + Revision 1.20 2005/01/22 23:53:43 mattias + fixed gtk2 intf from Peter Vreman + Revision 1.19 2004/09/30 10:35:50 mazen * Fix compile probelem under GTK2 related to THandle <--> Pointer conversion