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:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user