diff --git a/lcl/interfaces/gtk/gtkobject.inc b/lcl/interfaces/gtk/gtkobject.inc
index 8eea80ee1e..775d722f98 100644
--- a/lcl/interfaces/gtk/gtkobject.inc
+++ b/lcl/interfaces/gtk/gtkobject.inc
@@ -3063,7 +3063,8 @@ end;
Applies a Message to the sender
------------------------------------------------------------------------------}
//TODO: remove ALCLObject when creation splitup is finished
-procedure TGtkWidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTKObject; const ALCLObject: TObject);
+procedure TGtkWidgetSet.SetCallback(const AMsg: LongInt;
+ const AGTKObject: PGTKObject; const ALCLObject: TObject);
procedure ConnectSenderSignal(const AnObject:PGTKObject; const ASignal: PChar;
const ACallBackProc: Pointer);
@@ -3101,6 +3102,7 @@ procedure TGtkWidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTKO
procedure ConnectKeyPressReleaseEvents(const AnObject: PGTKObject);
begin
+ //debugln('ConnectKeyPressReleaseEvents A ALCLObject=',DbgSName(ALCLObject));
ConnectSenderSignal(AnObject,
'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
ConnectSenderSignalAfter(AnObject,
@@ -3114,6 +3116,7 @@ procedure TGtkWidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTKO
var
gObject, gFixed, gCore, Scroll, Adjustment: PGTKObject;
begin
+ //debugln('TGtkWidgetSet.SetCallback A ALCLObject=',DbgSName(ALCLObject),' AMsg=',dbgs(AMsg));
if AGTKObject = nil
then gObject := ObjectToGTKObject(ALCLObject)
else gObject := AGTKObject;
@@ -3231,6 +3234,7 @@ begin
LM_SYSCHAR,
LM_SYSKEYUP:
begin
+ //debugln('TGtkWidgetSet.SetCallback A KEY ALCLObject=',DbgSName(ALCLObject),' AMsg=',dbgs(AMsg));
if (ALCLObject is TCustomComboBox) then begin
ConnectKeyPressReleaseEvents(PgtkObject(PgtkCombo(gObject)^.entry));
end
@@ -7010,6 +7014,9 @@ end;
{ =============================================================================
$Log$
+ Revision 1.630 2005/02/19 20:33:09 mattias
+ fixed gtk2 key handle result
+
Revision 1.629 2005/02/19 16:30:46 mattias
fixed 1.0.10 compilation
diff --git a/lcl/interfaces/gtk/gtkproc.inc b/lcl/interfaces/gtk/gtkproc.inc
index 502f5d1128..2e065a5650 100644
--- a/lcl/interfaces/gtk/gtkproc.inc
+++ b/lcl/interfaces/gtk/gtkproc.inc
@@ -2040,7 +2040,8 @@ var
TargetData: gPointer;
KeyPressesChar: char;
begin
- Result := True;
+ Result := CallBackDefaultReturn;
+
EventStopped := False;
HandledByLCL:=KeyEventWasHandledByLCL(Event,BeforeEvent);
@@ -4463,7 +4464,7 @@ begin
end;
{$ELSE}
begin
- Result:= g_signal_handler_find(AnObject,
+ Result:=g_signal_handler_find(AnObject,
G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA,
0,0,nil,ACallBackProc,ALCLObject)<>0;
end;
@@ -4480,7 +4481,8 @@ var
RealizeConnected: Boolean;
HasRealizeSignal: Boolean;
begin
- if ACallBackProc = nil then exit;
+ if ACallBackProc = nil then
+ RaiseGDBException('ConnectSignal');
// first loop through the handlers to:
// - check if a handler already exists
@@ -8057,6 +8059,9 @@ end;
{ =============================================================================
$Log$
+ Revision 1.338 2005/02/19 20:33:09 mattias
+ fixed gtk2 key handle result
+
Revision 1.337 2005/02/19 16:30:47 mattias
fixed 1.0.10 compilation
diff --git a/lcl/interfaces/gtk/gtkproc.pp b/lcl/interfaces/gtk/gtkproc.pp
index d034c0060c..42fa5b379c 100644
--- a/lcl/interfaces/gtk/gtkproc.pp
+++ b/lcl/interfaces/gtk/gtkproc.pp
@@ -581,16 +581,18 @@ function GetDesignOnlySignalFlag(Widget: PGtkWidget;
// signals
// new signal procs, these will obsolete the old ones
+// MG: Say who?
procedure SignalConnect(const AWidget: PGTKWidget; const ASignal: PChar;
const AProc: Pointer; const AInfo: PWidgetInfo);
procedure SignalConnectAfter(const AWidget: PGTKWidget; const ASignal: PChar;
const AProc: Pointer; const AInfo: PWidgetInfo);
// old signal procs
-procedure ConnectSignal(const AnObject:PGTKObject; const ASignal: PChar;
+// MG: why old?
+procedure ConnectSignal(const AnObject: PGTKObject; const ASignal: PChar;
const ACallBackProc: Pointer; const ALCLObject: TObject;
const AReqSignalMask: TGdkEventMask; const ASFlags: TConnectSignalFlags);
-procedure ConnectSignal(const AnObject:PGTKObject; const ASignal: PChar;
+procedure ConnectSignal(const AnObject: PGTKObject; const ASignal: PChar;
const ACallBackProc: Pointer; const ALCLObject: TObject;
const AReqSignalMask: TGdkEventMask);
procedure ConnectSignalAfter(const AnObject:PGTKObject; const ASignal: PChar;
diff --git a/lcl/interfaces/gtk/gtkwsbuttons.pp b/lcl/interfaces/gtk/gtkwsbuttons.pp
index cdc988f2a6..0e3da5a205 100644
--- a/lcl/interfaces/gtk/gtkwsbuttons.pp
+++ b/lcl/interfaces/gtk/gtkwsbuttons.pp
@@ -157,7 +157,8 @@ begin
Result := False;
end;
-procedure TGtkWSButton.SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo);
+procedure TGtkWSButton.SetCallbacks(const AGtkWidget: PGtkWidget;
+ const AWidgetInfo: PWidgetInfo);
begin
TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
diff --git a/lcl/interfaces/gtk2/gtk2object.inc b/lcl/interfaces/gtk2/gtk2object.inc
index d11fcf601b..8b36ac538e 100644
--- a/lcl/interfaces/gtk2/gtk2object.inc
+++ b/lcl/interfaces/gtk2/gtk2object.inc
@@ -60,12 +60,32 @@ begin
Result := False;
end;
-function GTK2KeyUpDown(Widget: PGtkWidget; Event : pgdkeventkey;
+function GTK2KeyDown(Widget: PGtkWidget; Event : pgdkeventkey;
Data: gPointer) : GBoolean; cdecl;
begin
- Result := GtkWidgetIsA(Widget,GTK_APIWIDGETCLIENT_TYPE) and
- (HandleGtkKeyUpDown(Widget, Event, Data, True) or
- HandleGtkKeyUpDown(Widget, Event, Data, False));
+ debugln('GTK2KeyDown ',DbgSName(TObject(Data)));
+ Result := HandleGtkKeyUpDown(Widget, Event, Data, True);
+end;
+
+function GTK2KeyDownAfter(Widget: PGtkWidget; Event : pgdkeventkey;
+ Data: gPointer) : GBoolean; cdecl;
+begin
+ debugln('GTK2KeyDownAfter ',DbgSName(TObject(Data)));
+ Result := HandleGtkKeyUpDown(Widget, Event, Data, False);
+end;
+
+function GTK2KeyUp(Widget: PGtkWidget; Event : pgdkeventkey;
+ Data: gPointer) : GBoolean; cdecl;
+begin
+ debugln('GTK2KeyUp ',DbgSName(TObject(Data)));
+ Result := HandleGtkKeyUpDown(Widget, Event, Data, True);
+end;
+
+function GTK2KeyUpAfter(Widget: PGtkWidget; Event : pgdkeventkey;
+ Data: gPointer) : GBoolean; cdecl;
+begin
+ debugln('GTK2KeyUpAfter ',DbgSName(TObject(Data)));
+ Result := HandleGtkKeyUpDown(Widget, Event, Data, False);
end;
function GTK2KillFocusCB(widget: PGtkWidget; event:PGdkEventFocus;
@@ -974,19 +994,21 @@ procedure TGTK2WidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTK
procedure ConnectKeyPressReleaseEvents(const AnObject: PGTKObject);
begin
+ //debugln('gtk2object ConnectKeyPressReleaseEvents A ALCLObject=',DbgSName(ALCLObject));
ConnectSenderSignal(AnObject,
- 'key-press-event', @GTK2KeyUpDown, GDK_KEY_PRESS_MASK);
+ 'key-press-event', @GTK2KeyDown, GDK_KEY_PRESS_MASK);
//ConnectSenderSignalAfter(AnObject,
- // 'key-press-event', @GTK2KeyUpDownAfter, GDK_KEY_PRESS_MASK);
- ConnectSenderSignal(AnObject,
- 'key-release-event', @GTK2KeyUpDown, GDK_KEY_RELEASE_MASK);
+ // 'key-press-event', @GTK2KeyDownAfter, GDK_KEY_PRESS_MASK);
+ //ConnectSenderSignal(AnObject,
+ // 'key-release-event', @GTK2KeyUp, GDK_KEY_RELEASE_MASK);
//ConnectSenderSignalAfter(AnObject,
- // 'key-release-event', @GTK2KeyUpDownAfter, GDK_KEY_RELEASE_MASK);
+ // 'key-release-event', @GTK2KeyUpAfter, GDK_KEY_RELEASE_MASK);
end;
var
gObject, gFixed, gCore: PGTKObject;
begin
+ //debugln('gtk2object.inc TGtkWidgetSet.SetCallback A ALCLObject=',DbgSName(ALCLObject),' AMsg=',dbgs(AMsg));
gObject := AGTKObject;
if gObject = nil then Exit;
@@ -1011,7 +1033,7 @@ begin
LM_CHAR,
LM_KEYDOWN,
LM_KEYUP,
-
+
LM_SYSCHAR,
LM_SYSKEYDOWN,
LM_SYSKEYUP:
@@ -1499,6 +1521,9 @@ end;
{ =============================================================================
$Log$
+ Revision 1.25 2005/02/19 20:33:10 mattias
+ fixed gtk2 key handle result
+
Revision 1.24 2005/02/16 23:56:51 mattias
fixed some gtk2 intf mem leaks, clean ups
diff --git a/lcl/tests/test1_2button.lpi b/lcl/tests/test1_2button.lpi
index f213afc421..7189950971 100644
--- a/lcl/tests/test1_2button.lpi
+++ b/lcl/tests/test1_2button.lpi
@@ -9,21 +9,21 @@