fixed gtk2 key handle result

git-svn-id: trunk@6813 -
This commit is contained in:
mattias 2005-02-19 20:33:10 +00:00
parent 458fb0ea45
commit 6161468c16
6 changed files with 61 additions and 21 deletions

View File

@ -3063,7 +3063,8 @@ end;
Applies a Message to the sender Applies a Message to the sender
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
//TODO: remove ALCLObject when creation splitup is finished //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; procedure ConnectSenderSignal(const AnObject:PGTKObject; const ASignal: PChar;
const ACallBackProc: Pointer); const ACallBackProc: Pointer);
@ -3101,6 +3102,7 @@ procedure TGtkWidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTKO
procedure ConnectKeyPressReleaseEvents(const AnObject: PGTKObject); procedure ConnectKeyPressReleaseEvents(const AnObject: PGTKObject);
begin begin
//debugln('ConnectKeyPressReleaseEvents A ALCLObject=',DbgSName(ALCLObject));
ConnectSenderSignal(AnObject, ConnectSenderSignal(AnObject,
'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK); 'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
ConnectSenderSignalAfter(AnObject, ConnectSenderSignalAfter(AnObject,
@ -3114,6 +3116,7 @@ procedure TGtkWidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTKO
var var
gObject, gFixed, gCore, Scroll, Adjustment: PGTKObject; gObject, gFixed, gCore, Scroll, Adjustment: PGTKObject;
begin begin
//debugln('TGtkWidgetSet.SetCallback A ALCLObject=',DbgSName(ALCLObject),' AMsg=',dbgs(AMsg));
if AGTKObject = nil if AGTKObject = nil
then gObject := ObjectToGTKObject(ALCLObject) then gObject := ObjectToGTKObject(ALCLObject)
else gObject := AGTKObject; else gObject := AGTKObject;
@ -3231,6 +3234,7 @@ begin
LM_SYSCHAR, LM_SYSCHAR,
LM_SYSKEYUP: LM_SYSKEYUP:
begin begin
//debugln('TGtkWidgetSet.SetCallback A KEY ALCLObject=',DbgSName(ALCLObject),' AMsg=',dbgs(AMsg));
if (ALCLObject is TCustomComboBox) then begin if (ALCLObject is TCustomComboBox) then begin
ConnectKeyPressReleaseEvents(PgtkObject(PgtkCombo(gObject)^.entry)); ConnectKeyPressReleaseEvents(PgtkObject(PgtkCombo(gObject)^.entry));
end end
@ -7010,6 +7014,9 @@ end;
{ ============================================================================= { =============================================================================
$Log$ $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 Revision 1.629 2005/02/19 16:30:46 mattias
fixed 1.0.10 compilation fixed 1.0.10 compilation

View File

@ -2040,7 +2040,8 @@ var
TargetData: gPointer; TargetData: gPointer;
KeyPressesChar: char; KeyPressesChar: char;
begin begin
Result := True; Result := CallBackDefaultReturn;
EventStopped := False; EventStopped := False;
HandledByLCL:=KeyEventWasHandledByLCL(Event,BeforeEvent); HandledByLCL:=KeyEventWasHandledByLCL(Event,BeforeEvent);
@ -4463,7 +4464,7 @@ begin
end; end;
{$ELSE} {$ELSE}
begin begin
Result:= g_signal_handler_find(AnObject, Result:=g_signal_handler_find(AnObject,
G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA, G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA,
0,0,nil,ACallBackProc,ALCLObject)<>0; 0,0,nil,ACallBackProc,ALCLObject)<>0;
end; end;
@ -4480,7 +4481,8 @@ var
RealizeConnected: Boolean; RealizeConnected: Boolean;
HasRealizeSignal: Boolean; HasRealizeSignal: Boolean;
begin begin
if ACallBackProc = nil then exit; if ACallBackProc = nil then
RaiseGDBException('ConnectSignal');
// first loop through the handlers to: // first loop through the handlers to:
// - check if a handler already exists // - check if a handler already exists
@ -8057,6 +8059,9 @@ end;
{ ============================================================================= { =============================================================================
$Log$ $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 Revision 1.337 2005/02/19 16:30:47 mattias
fixed 1.0.10 compilation fixed 1.0.10 compilation

View File

@ -581,16 +581,18 @@ function GetDesignOnlySignalFlag(Widget: PGtkWidget;
// signals // signals
// new signal procs, these will obsolete the old ones // new signal procs, these will obsolete the old ones
// MG: Say who?
procedure SignalConnect(const AWidget: PGTKWidget; const ASignal: PChar; procedure SignalConnect(const AWidget: PGTKWidget; const ASignal: PChar;
const AProc: Pointer; const AInfo: PWidgetInfo); const AProc: Pointer; const AInfo: PWidgetInfo);
procedure SignalConnectAfter(const AWidget: PGTKWidget; const ASignal: PChar; procedure SignalConnectAfter(const AWidget: PGTKWidget; const ASignal: PChar;
const AProc: Pointer; const AInfo: PWidgetInfo); const AProc: Pointer; const AInfo: PWidgetInfo);
// old signal procs // 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 ACallBackProc: Pointer; const ALCLObject: TObject;
const AReqSignalMask: TGdkEventMask; const ASFlags: TConnectSignalFlags); 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 ACallBackProc: Pointer; const ALCLObject: TObject;
const AReqSignalMask: TGdkEventMask); const AReqSignalMask: TGdkEventMask);
procedure ConnectSignalAfter(const AnObject:PGTKObject; const ASignal: PChar; procedure ConnectSignalAfter(const AnObject:PGTKObject; const ASignal: PChar;

View File

@ -157,7 +157,8 @@ begin
Result := False; Result := False;
end; end;
procedure TGtkWSButton.SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); procedure TGtkWSButton.SetCallbacks(const AGtkWidget: PGtkWidget;
const AWidgetInfo: PWidgetInfo);
begin begin
TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject)); TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));

View File

@ -60,12 +60,32 @@ begin
Result := False; Result := False;
end; end;
function GTK2KeyUpDown(Widget: PGtkWidget; Event : pgdkeventkey; function GTK2KeyDown(Widget: PGtkWidget; Event : pgdkeventkey;
Data: gPointer) : GBoolean; cdecl; Data: gPointer) : GBoolean; cdecl;
begin begin
Result := GtkWidgetIsA(Widget,GTK_APIWIDGETCLIENT_TYPE) and debugln('GTK2KeyDown ',DbgSName(TObject(Data)));
(HandleGtkKeyUpDown(Widget, Event, Data, True) or Result := HandleGtkKeyUpDown(Widget, Event, Data, True);
HandleGtkKeyUpDown(Widget, Event, Data, False)); 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; end;
function GTK2KillFocusCB(widget: PGtkWidget; event:PGdkEventFocus; function GTK2KillFocusCB(widget: PGtkWidget; event:PGdkEventFocus;
@ -974,19 +994,21 @@ procedure TGTK2WidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTK
procedure ConnectKeyPressReleaseEvents(const AnObject: PGTKObject); procedure ConnectKeyPressReleaseEvents(const AnObject: PGTKObject);
begin begin
//debugln('gtk2object ConnectKeyPressReleaseEvents A ALCLObject=',DbgSName(ALCLObject));
ConnectSenderSignal(AnObject, ConnectSenderSignal(AnObject,
'key-press-event', @GTK2KeyUpDown, GDK_KEY_PRESS_MASK); 'key-press-event', @GTK2KeyDown, GDK_KEY_PRESS_MASK);
//ConnectSenderSignalAfter(AnObject, //ConnectSenderSignalAfter(AnObject,
// 'key-press-event', @GTK2KeyUpDownAfter, GDK_KEY_PRESS_MASK); // 'key-press-event', @GTK2KeyDownAfter, GDK_KEY_PRESS_MASK);
ConnectSenderSignal(AnObject, //ConnectSenderSignal(AnObject,
'key-release-event', @GTK2KeyUpDown, GDK_KEY_RELEASE_MASK); // 'key-release-event', @GTK2KeyUp, GDK_KEY_RELEASE_MASK);
//ConnectSenderSignalAfter(AnObject, //ConnectSenderSignalAfter(AnObject,
// 'key-release-event', @GTK2KeyUpDownAfter, GDK_KEY_RELEASE_MASK); // 'key-release-event', @GTK2KeyUpAfter, GDK_KEY_RELEASE_MASK);
end; end;
var var
gObject, gFixed, gCore: PGTKObject; gObject, gFixed, gCore: PGTKObject;
begin begin
//debugln('gtk2object.inc TGtkWidgetSet.SetCallback A ALCLObject=',DbgSName(ALCLObject),' AMsg=',dbgs(AMsg));
gObject := AGTKObject; gObject := AGTKObject;
if gObject = nil then Exit; if gObject = nil then Exit;
@ -1011,7 +1033,7 @@ begin
LM_CHAR, LM_CHAR,
LM_KEYDOWN, LM_KEYDOWN,
LM_KEYUP, LM_KEYUP,
LM_SYSCHAR, LM_SYSCHAR,
LM_SYSKEYDOWN, LM_SYSKEYDOWN,
LM_SYSKEYUP: LM_SYSKEYUP:
@ -1499,6 +1521,9 @@ end;
{ ============================================================================= { =============================================================================
$Log$ $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 Revision 1.24 2005/02/16 23:56:51 mattias
fixed some gtk2 intf mem leaks, clean ups fixed some gtk2 intf mem leaks, clean ups

View File

@ -9,21 +9,21 @@
<SaveOnlyProjectUnits Value="True"/> <SaveOnlyProjectUnits Value="True"/>
</Flags> </Flags>
<MainUnit Value="0"/> <MainUnit Value="0"/>
<ActiveEditorIndexAtStart Value="0"/> <ActiveEditorIndexAtStart Value="6"/>
<IconPath Value="./"/> <IconPath Value="./"/>
<TargetFileExt Value=""/> <TargetFileExt Value=""/>
<Title Value="test1_2button"/> <Title Value="test1_2button"/>
</General> </General>
<Units Count="1"> <Units Count="1">
<Unit0> <Unit0>
<CursorPos X="14" Y="210"/> <CursorPos X="14" Y="347"/>
<EditorIndex Value="0"/> <EditorIndex Value="0"/>
<Filename Value="test1_2button.lpr"/> <Filename Value="test1_2button.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<TopLine Value="193"/> <TopLine Value="321"/>
<UnitName Value="test1_2button"/> <UnitName Value="test1_2button"/>
<UsageCount Value="34"/> <UsageCount Value="38"/>
</Unit0> </Unit0>
</Units> </Units>
<PublishOptions> <PublishOptions>