mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-05 18:18:15 +02:00
more callbacks fixes for gtk2, partly fix gtk2 CheckListBox
git-svn-id: trunk@4690 -
This commit is contained in:
parent
0374439e2c
commit
92dbf72761
@ -130,7 +130,12 @@ var
|
||||
TheWindow: PGdkWindow;
|
||||
TheForm: TCustomForm;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
EventTrace('realize', nil);
|
||||
|
||||
if (Data<>nil) then begin
|
||||
@ -206,7 +211,12 @@ var
|
||||
ClientWidget: PGtkWidget;
|
||||
MainWidget: PGtkWidget;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if Data=nil then ;
|
||||
EventTrace('realizeafter', nil);
|
||||
|
||||
@ -265,33 +275,58 @@ end;
|
||||
function gtkshowCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMShowWindow;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
EventTrace('show', data);
|
||||
if Widget=nil then ;
|
||||
FillChar(Mess,SizeOf(Mess),0);
|
||||
Mess.Msg := LM_SHOWWINDOW;
|
||||
Mess.Show := True;
|
||||
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkHideCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMShowWindow;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
EventTrace('hide', data);
|
||||
if Widget=nil then ;
|
||||
FillChar(Mess,SizeOf(Mess),0);
|
||||
Mess.Msg := LM_SHOWWINDOW;
|
||||
Mess.Show := False;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkactivateCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
Result:= True;
|
||||
EventTrace('activate', data);
|
||||
@ -300,8 +335,14 @@ begin
|
||||
|
||||
Mess.Msg := LM_ACTIVATE;
|
||||
Mess.Result := 0;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
//writeln('gtkactivateCB ',Result);
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function GTKCheckMenuToggeledCB(AMenuItem: PGTKCheckMenuItem; AData: gPointer): GBoolean; cdecl;
|
||||
@ -309,7 +350,12 @@ function GTKCheckMenuToggeledCB(AMenuItem: PGTKCheckMenuItem; AData: gPointer):
|
||||
var
|
||||
LCLMenuItem: TMenuItem;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
EventTrace('toggled', AData);
|
||||
|
||||
LCLMenuItem := TMenuItem(AData);
|
||||
@ -331,36 +377,67 @@ end;
|
||||
function gtkchangedCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
if ComponentIsDestroyingHandle(TWinControl(Data))
|
||||
or (LockOnChange(PgtkObject(Widget),0)>0) then exit;
|
||||
EventTrace('changed', data);
|
||||
|
||||
Mess.Msg := LM_CHANGED;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkchanged_editbox( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if LockOnChange(PgtkObject(Widget),0)>0 then exit;
|
||||
EventTrace('changed_editbox', data);
|
||||
|
||||
Mess.Msg := CM_TEXTCHANGED;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkdaychanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
MSG: TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if LockOnChange(PgtkObject(Widget),0)>0 then exit;
|
||||
EventTrace('day changed', data);
|
||||
MSG.Msg := LM_DAYCHANGED;
|
||||
Result := DeliverPostMessage(Data, MSG);
|
||||
Status := DeliverPostMessage(Data, MSG);
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
|
||||
@ -395,7 +472,11 @@ function gtkExposeEventAfter(Widget: PGtkWidget; Event : PGDKEventExpose;
|
||||
var
|
||||
DesignOnlySignal: boolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
EventTrace('ExposeAfter', data);
|
||||
if (Event^.Count > 0) then exit;
|
||||
|
||||
@ -421,6 +502,7 @@ function gtkfrmactivateAfter(widget: PGtkWidget; Event : PgdkEventFocus;
|
||||
data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMActivate;
|
||||
Status : GBoolean;
|
||||
{$IFDEF VerboseFocus}
|
||||
LCLObject: TObject;
|
||||
CurFocusWidget: PGtkWidget;
|
||||
@ -458,13 +540,20 @@ begin
|
||||
writeln('');
|
||||
{$ENDIF}
|
||||
Mess.Msg := LM_ACTIVATE;
|
||||
Result := DeliverPostMessage(Data, Mess);
|
||||
Status := DeliverPostMessage(Data, Mess);
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkfrmdeactivateAfter( widget: PGtkWidget; Event : PgdkEventFocus;
|
||||
data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMActivate;
|
||||
Status : GBoolean;
|
||||
{$IFDEF VerboseFocus}
|
||||
LCLObject: TControl;
|
||||
{$ENDIF}
|
||||
@ -481,12 +570,22 @@ begin
|
||||
writeln(' LCLObject=nil');
|
||||
{$ENDIF}
|
||||
Mess.Msg := LM_DEACTIVATE;
|
||||
Result := DeliverPostMessage(Data, Mess);
|
||||
Status := DeliverPostMessage(Data, Mess);
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function GTKMap(Widget: PGTKWidget; Data: gPointer): GBoolean; cdecl;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
if (Widget=nil) then ;
|
||||
EventTrace('map', data);
|
||||
end;
|
||||
@ -875,13 +974,25 @@ end;
|
||||
function gtkdestroyCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess: TLMessage;
|
||||
Status : GBoolean;
|
||||
Info: PWinWidgetInfo;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
EventTrace('destroy', data);
|
||||
FillChar(Mess,SizeOf(Mess),0);
|
||||
Mess.msg := LM_DESTROY;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
|
||||
// NOTE: if the destroy message is posted
|
||||
// we should post an info destroy message as well
|
||||
@ -904,7 +1015,11 @@ function gtkresizeCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
//var
|
||||
// Mess : TLMessage;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
if (Widget=nil) then ;
|
||||
EventTrace('resize', data);
|
||||
// Mess.msg := LM_RESIZE;
|
||||
@ -916,13 +1031,24 @@ end;
|
||||
function gtkMonthChanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess: TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
if (Widget=nil) then ;
|
||||
EventTrace('month changed', data);
|
||||
FillChar(Mess,SizeOf(Mess),0);
|
||||
Mess.Msg := LM_MONTHCHANGED;
|
||||
Result := DeliverPostMessage(Data, Mess);
|
||||
Status := DeliverPostMessage(Data, Mess);
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
{-------------------------------------------------------------------------------
|
||||
@ -2017,19 +2143,37 @@ end;
|
||||
function gtkPressedCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if (Widget=nil) then ;
|
||||
EventTrace('pressed', data);
|
||||
Mess.msg := LM_PRESSED;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkEnterCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
EventTrace('enter', data);
|
||||
|
||||
if csDesigning in TControl(Data).ComponentState then begin
|
||||
@ -2039,14 +2183,26 @@ begin
|
||||
|
||||
Mess.msg := CM_MOUSEENTER;
|
||||
writeln('gtkEnterCB');
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkLeaveCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
EventTrace('leave', data);
|
||||
|
||||
if csDesigning in TControl(Data).ComponentState then begin
|
||||
@ -2056,14 +2212,25 @@ begin
|
||||
|
||||
Mess.msg := CM_MOUSELEAVE;
|
||||
writeln('gtkLeaveCB');
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkMoveCursorCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if (Widget=nil) then ;
|
||||
EventTrace('move-cursor', data);
|
||||
Mess.msg := LM_MOVECURSOR;
|
||||
@ -2105,7 +2272,12 @@ begin
|
||||
writeln('VFP gtksize_allocateCB: ',TControl(Data).ClassName,' ',Size^.X,',',Size^.Y);
|
||||
{$ENDIF}
|
||||
SaveSizeNotification(Widget);
|
||||
Result:=true;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtksize_allocate_client(widget: PGtkWidget; size: pGtkAllocation;
|
||||
@ -2139,7 +2311,11 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
Result:=true;
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkswitchpage(widget: PGtkWidget; page: Pgtkwidget; pagenum: integer;
|
||||
@ -2147,8 +2323,14 @@ function gtkswitchpage(widget: PGtkWidget; page: Pgtkwidget; pagenum: integer;
|
||||
var
|
||||
Mess : TLMNotify;
|
||||
T : tagNMHDR;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if (Widget=nil) or (Page=nil) then ;
|
||||
EventTrace('switch-page', data);
|
||||
UpdateNoteBookClientWidget(TObject(Data));
|
||||
@ -2157,7 +2339,13 @@ begin
|
||||
T.hwndfrom := longint(widget);
|
||||
T.idfrom := pagenum; //use this to set pageindex to the correct page.
|
||||
Mess.NMHdr := @T;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
|
||||
@ -2189,12 +2377,24 @@ end;
|
||||
function gtkreleasedCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMEssage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if (Widget=nil) then ;
|
||||
EventTrace('released', data);
|
||||
Mess.msg := LM_RELEASED;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkInsertText( widget: PGtkWidget; char : pChar; NewTextLength : Integer; Position : pgint; data: gPointer) : GBoolean; cdecl;
|
||||
@ -2202,7 +2402,11 @@ var
|
||||
Memo: TCustomMemo;
|
||||
CurrLength, CutLength: integer;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
{ GTK does not provide its own max. length for memos
|
||||
we have to do our own. }
|
||||
@ -2347,11 +2551,18 @@ end;
|
||||
function gtkValueChanged(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
EventTrace('Value changed', data);
|
||||
if (Widget=nil) then ;
|
||||
Mess.msg := LM_CHANGED;
|
||||
Result := DeliverMessage(Data, Mess) = 0;
|
||||
Status := DeliverMessage(Data, Mess) = 0;
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -2482,6 +2693,7 @@ var
|
||||
Scroll: PGTKHScrollBar;
|
||||
X, Y: GInt;
|
||||
Mask: TGdkModifierType;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
Assert(False, Format('Trace:[GTKHScrollCB] Value: %d', [Round(Adjustment^.Value)]));
|
||||
|
||||
@ -2529,7 +2741,13 @@ begin
|
||||
Pos := V;
|
||||
ScrollBar := HWND(Scroll);
|
||||
end;
|
||||
Result := DeliverMessage(Data, Msg) = 0;
|
||||
Status := DeliverMessage(Data, Msg) = 0;
|
||||
|
||||
{$Ifdef GTK2}
|
||||
Status := False;
|
||||
{$Endif}
|
||||
|
||||
Result := Status
|
||||
end;
|
||||
|
||||
function GTKVScrollCB(Adjustment: PGTKAdjustment;
|
||||
@ -2542,6 +2760,7 @@ var
|
||||
Scroll: PGTKHScrollBar;
|
||||
X, Y: GInt;
|
||||
Mask: TGdkModifierType;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
Assert(False, Format('Trace:[GTKVScrollCB] Value: %d', [Round(Adjustment^.Value)]));
|
||||
|
||||
@ -2590,7 +2809,13 @@ begin
|
||||
Pos := V;
|
||||
ScrollBar := HWND(Scroll);
|
||||
end;
|
||||
Result := DeliverMessage(Data, Msg) = 0;
|
||||
Status := DeliverMessage(Data, Msg) = 0;
|
||||
|
||||
{$Ifdef GTK2}
|
||||
Status := False;
|
||||
{$Endif}
|
||||
|
||||
Result := Status
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -2692,12 +2917,24 @@ end;
|
||||
function gtkYearChanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
MSG: TLMessage;
|
||||
Status : GBoolean;
|
||||
begin
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := True;
|
||||
{$endif}
|
||||
|
||||
if (Widget=nil) then ;
|
||||
EventTrace('year changed', data);
|
||||
MSG.Msg := LM_YEARCHANGED;
|
||||
Result := DeliverPostMessage(Data, MSG);
|
||||
Status := DeliverPostMessage(Data, MSG);
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := False;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -2926,6 +3163,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.199 2003/10/02 01:18:38 ajgenius
|
||||
more callbacks fixes for gtk2, partly fix gtk2 CheckListBox
|
||||
|
||||
Revision 1.198 2003/10/01 20:51:09 ajgenius
|
||||
partly fix focus callbacks for GTK2
|
||||
|
||||
|
@ -4707,6 +4707,7 @@ begin
|
||||
SetCallback(LM_GRABFOCUS,Sender);
|
||||
end;
|
||||
|
||||
{$IfDef GTK1}
|
||||
csListview:
|
||||
begin
|
||||
SetCallback(LM_HSCROLL,Sender);
|
||||
@ -4717,6 +4718,7 @@ begin
|
||||
SetCallback(LVN_DELETEITEM,Sender);
|
||||
SetCallback(LVN_INSERTITEM,Sender);
|
||||
end;
|
||||
{$EndIf}
|
||||
|
||||
csScrollBox :
|
||||
Begin
|
||||
@ -8443,6 +8445,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.430 2003/10/02 01:18:38 ajgenius
|
||||
more callbacks fixes for gtk2, partly fix gtk2 CheckListBox
|
||||
|
||||
Revision 1.429 2003/09/25 20:44:42 ajgenius
|
||||
minor changes for gtk2
|
||||
|
||||
|
@ -22,23 +22,45 @@
|
||||
// {$DEFINE ASSERT_IS_ON}
|
||||
{$ENDIF}
|
||||
|
||||
Procedure gtk_clb_toggle(cellrenderertoggle : PGtkCellRendererToggle; arg1 : PGChar;
|
||||
treeview : PGtkTreeView); cdecl;
|
||||
var
|
||||
aTreeModel : PGtkTreeModel;
|
||||
aTreeIter : TGtkTreeIter;
|
||||
value : pgValue;
|
||||
begin
|
||||
aTreeModel := gtk_tree_view_get_model (treeview);
|
||||
if (gtk_tree_model_get_iter_from_string (aTreeModel, @aTreeIter, arg1)) then begin
|
||||
aTreeIter.stamp := GTK_LIST_STORE (aTreeModel)^.stamp; //strange hack
|
||||
value := g_new0(SizeOf(TgValue), 1);
|
||||
gtk_tree_model_get_value(aTreeModel, @aTreeIter, 0, value);
|
||||
|
||||
g_value_set_boolean(value, not g_value_get_boolean(value));
|
||||
|
||||
gtk_list_store_set_value (GTK_LIST_STORE (aTreeModel), @aTreeIter, 0, value);
|
||||
g_value_unset(value);
|
||||
g_free(value);
|
||||
end;
|
||||
end;
|
||||
|
||||
Procedure gtk_clb_toggle_row_activated(treeview : PGtkTreeView; arg1 : PGtkTreePath;
|
||||
arg2 : PGtkTreeViewColumn; data : gpointer); cdecl;
|
||||
var
|
||||
aTreeModel : PGtkTreeModel;
|
||||
aTreeIter : TGtkTreeIter;
|
||||
value : boolean;
|
||||
value : PGValue;
|
||||
begin
|
||||
aTreeModel := gtk_tree_view_get_model (treeview);
|
||||
if (gtk_tree_model_get_iter (aTreeModel, @aTreeIter, arg1)) then begin
|
||||
gtk_tree_model_get (aTreeModel, @aTreeIter, [0, @value, -1]);
|
||||
aTreeIter.stamp := GTK_LIST_STORE (aTreeModel)^.stamp; //strange hack
|
||||
value := g_new0(SizeOf(TgValue), 1);
|
||||
gtk_tree_model_get_value(aTreeModel, @aTreeIter, 0, value);
|
||||
|
||||
If value then
|
||||
value := False
|
||||
else
|
||||
value := True;
|
||||
|
||||
gtk_list_store_set (GTK_LIST_STORE (aTreeModel), @aTreeIter, [0, value, -1]);
|
||||
g_value_set_boolean(value, not g_value_get_boolean(value));
|
||||
|
||||
gtk_list_store_set_value (GTK_LIST_STORE (aTreeModel), @aTreeIter, 0, value);
|
||||
g_value_unset(value);
|
||||
g_free(value);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -130,9 +152,13 @@ begin
|
||||
TempInt := 0;
|
||||
if (CompStyle = csCheckListBox) then begin
|
||||
renderer := gtk_cell_renderer_toggle_new();
|
||||
column := gtk_tree_view_column_new_with_attributes('', renderer, ['active', 0, nil]);
|
||||
column := gtk_tree_view_column_new_with_attributes('', renderer, ['active', 0, nil]);
|
||||
gtk_cell_renderer_toggle_set_active(GTK_CELL_RENDERER_TOGGLE(renderer), True);
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (TempWidget), column);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
g_signal_connect (renderer, 'toggled',
|
||||
G_CALLBACK (@gtk_clb_toggle),
|
||||
TempWidget);
|
||||
g_signal_connect (GTK_TREE_VIEW (TempWidget), 'row_activated',
|
||||
G_CALLBACK (@gtk_clb_toggle_row_activated),
|
||||
nil);
|
||||
@ -978,6 +1004,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.3 2003/10/02 01:18:38 ajgenius
|
||||
more callbacks fixes for gtk2, partly fix gtk2 CheckListBox
|
||||
|
||||
Revision 1.2 2003/09/24 17:23:54 ajgenius
|
||||
more work toward GTK2 - partly fix CheckListBox, & MenuItems
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user