Added wxApp::CheckForKeyUp

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Michael Bedward
1999-07-30 03:50:03 +00:00
parent d5dbeb3140
commit 3d9431bf7e

View File

@@ -346,22 +346,35 @@ void wxApp::ProcessXEvent(WXEvent* _event)
widget, XtParent(widget)); widget, XtParent(widget));
#endif // DEBUG #endif // DEBUG
if (CheckForAccelerator(_event)) if (CheckForAccelerator(_event))
{ {
// Do nothing! We intercepted and processed the event as an // Do nothing! We intercepted and processed the event as an
// accelerator. // accelerator.
return; return;
} }
else if (CheckForKeyDown(_event)) else if (CheckForKeyDown(_event))
{ {
// We intercepted and processed the key down event // We intercepted and processed the key down event
return; return;
} }
else else
{ {
XtDispatchEvent(event); XtDispatchEvent(event);
return; return;
} }
}
else if (event->type == KeyRelease)
{
if (CheckForKeyUp(_event))
{
// We intercepted and processed the key up event
return;
}
else
{
XtDispatchEvent(event);
return;
}
} }
else if (event->type == PropertyNotify) else if (event->type == PropertyNotify)
{ {
@@ -640,21 +653,46 @@ bool wxApp::CheckForKeyDown(WXEvent* event)
XEvent* xEvent = (XEvent*) event; XEvent* xEvent = (XEvent*) event;
if (xEvent->xany.type == KeyPress) if (xEvent->xany.type == KeyPress)
{ {
Widget widget = XtWindowToWidget((Display*) wxGetDisplay(), Widget widget = XtWindowToWidget((Display*) wxGetDisplay(),
xEvent->xany.window); xEvent->xany.window);
wxWindow* win = NULL; wxWindow* win = NULL;
// Find the first wxWindow that corresponds to this event window // Find the first wxWindow that corresponds to this event window
while (widget && !(win = wxGetWindowFromTable(widget))) while (widget && !(win = wxGetWindowFromTable(widget)))
widget = XtParent(widget); widget = XtParent(widget);
if (!widget || !win) if (!widget || !win)
return FALSE; return FALSE;
wxKeyEvent keyEvent(wxEVT_KEY_DOWN); wxKeyEvent keyEvent(wxEVT_KEY_DOWN);
wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent); wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
return win->ProcessEvent( keyEvent ); return win->ProcessEvent( keyEvent );
}
return FALSE;
}
bool wxApp::CheckForKeyUp(WXEvent* event)
{
XEvent* xEvent = (XEvent*) event;
if (xEvent->xany.type == KeyRelease)
{
Widget widget = XtWindowToWidget((Display*) wxGetDisplay(),
xEvent->xany.window);
wxWindow* win = NULL;
// Find the first wxWindow that corresponds to this event window
while (widget && !(win = wxGetWindowFromTable(widget)))
widget = XtParent(widget);
if (!widget || !win)
return FALSE;
wxKeyEvent keyEvent(wxEVT_KEY_UP);
wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
return win->ProcessEvent( keyEvent );
} }
return FALSE; return FALSE;