gtk2: handle LM_CONTEXTMENU message triggered by "menu key" press

git-svn-id: trunk@20020 -
This commit is contained in:
paul 2009-05-18 02:56:42 +00:00
parent f84bbc8909
commit d154466c76
2 changed files with 18 additions and 0 deletions

View File

@ -358,6 +358,7 @@ begin
GtkWidgetSet.SetCallback(LM_MBUTTONUP, AGTKObject, AComponent);
GtkWidgetSet.SetCallback(LM_MOUSEWHEEL, AGTKObject, AComponent);
GtkWidgetSet.SetCallback(LM_DROPFILES, AGTKObject, AComponent);
GtkWidgetSet.SetCallback(LM_CONTEXTMENU, AGtkObject, AComponent);
end;
{$IFDEF GTK1}

View File

@ -115,6 +115,20 @@ begin
Result := False;
end;
function gtk2PopupMenuCB(Widget: PGtkWidget; data: gPointer): gboolean; cdecl;
var
Msg: TLMMouse;
begin
FillChar(Msg, SizeOf(Msg), #0);
Msg.Msg := LM_CONTEXTMENU;
Msg.Keys := 0; // todo: true keystate
Msg.XPos := Widget^.allocation.width div 2;
Msg.YPos := Widget^.allocation.height div 2;
Result := DeliverMessage(TComponent(data), Msg) <> 0;
end;
function gtk2showCB( widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
var
Status : GBoolean;
@ -381,6 +395,9 @@ begin
ConnectSenderSignal(gObject, 'hide', @gtk2hideCB);
end;
LM_CONTEXTMENU:
ConnectSenderSignal(gCore, 'popup-menu', @gtk2PopupMenuCB);
else
inherited SetCallbackEx(AMsg, AGTKObject, ALCLObject, Direct);
end;