added wxApp::Yield()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12095 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -360,43 +360,43 @@ void wxApp::ProcessXEvent(WXEvent* _event)
|
||||
widget, XtParent(widget));
|
||||
#endif // DEBUG
|
||||
|
||||
if (CheckForAccelerator(_event))
|
||||
{
|
||||
if (CheckForAccelerator(_event))
|
||||
{
|
||||
// Do nothing! We intercepted and processed the event as an
|
||||
// accelerator.
|
||||
return;
|
||||
}
|
||||
}
|
||||
#if 1
|
||||
// It seemed before that this hack was redundant and
|
||||
// key down events were being generated by wxCanvasInputEvent.
|
||||
// But no longer - why ???
|
||||
//
|
||||
else if (CheckForKeyDown(_event))
|
||||
{
|
||||
else if (CheckForKeyDown(_event))
|
||||
{
|
||||
// We intercepted and processed the key down event
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
else
|
||||
{
|
||||
XtDispatchEvent(event);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (event->type == KeyRelease)
|
||||
{
|
||||
// TODO: work out why we still need this ! -michael
|
||||
//
|
||||
if (CheckForKeyUp(_event))
|
||||
{
|
||||
// We intercepted and processed the key up event
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
XtDispatchEvent(event);
|
||||
return;
|
||||
}
|
||||
{
|
||||
// We intercepted and processed the key up event
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
XtDispatchEvent(event);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (event->type == PropertyNotify)
|
||||
{
|
||||
@@ -677,20 +677,20 @@ bool wxApp::CheckForKeyDown(WXEvent* event)
|
||||
if (xEvent->xany.type == KeyPress)
|
||||
{
|
||||
Widget widget = XtWindowToWidget((Display*) wxGetDisplay(),
|
||||
xEvent->xany.window);
|
||||
wxWindow* win = NULL;
|
||||
xEvent->xany.window);
|
||||
wxWindow* win = NULL;
|
||||
|
||||
// Find the first wxWindow that corresponds to this event window
|
||||
while (widget && !(win = wxGetWindowFromTable(widget)))
|
||||
// Find the first wxWindow that corresponds to this event window
|
||||
while (widget && !(win = wxGetWindowFromTable(widget)))
|
||||
widget = XtParent(widget);
|
||||
|
||||
if (!widget || !win)
|
||||
if (!widget || !win)
|
||||
return FALSE;
|
||||
|
||||
wxKeyEvent keyEvent(wxEVT_KEY_DOWN);
|
||||
wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
|
||||
wxKeyEvent keyEvent(wxEVT_KEY_DOWN);
|
||||
wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
|
||||
|
||||
return win->ProcessEvent( keyEvent );
|
||||
return win->ProcessEvent( keyEvent );
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -702,20 +702,20 @@ bool wxApp::CheckForKeyUp(WXEvent* event)
|
||||
if (xEvent->xany.type == KeyRelease)
|
||||
{
|
||||
Widget widget = XtWindowToWidget((Display*) wxGetDisplay(),
|
||||
xEvent->xany.window);
|
||||
wxWindow* win = NULL;
|
||||
xEvent->xany.window);
|
||||
wxWindow* win = NULL;
|
||||
|
||||
// Find the first wxWindow that corresponds to this event window
|
||||
while (widget && !(win = wxGetWindowFromTable(widget)))
|
||||
widget = XtParent(widget);
|
||||
// Find the first wxWindow that corresponds to this event window
|
||||
while (widget && !(win = wxGetWindowFromTable(widget)))
|
||||
widget = XtParent(widget);
|
||||
|
||||
if (!widget || !win)
|
||||
return FALSE;
|
||||
if (!widget || !win)
|
||||
return FALSE;
|
||||
|
||||
wxKeyEvent keyEvent(wxEVT_KEY_UP);
|
||||
wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
|
||||
wxKeyEvent keyEvent(wxEVT_KEY_UP);
|
||||
wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
|
||||
|
||||
return win->ProcessEvent( keyEvent );
|
||||
return win->ProcessEvent( keyEvent );
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -737,40 +737,30 @@ void wxExit()
|
||||
|
||||
// Yield to other processes
|
||||
|
||||
static bool gs_inYield = FALSE;
|
||||
|
||||
bool wxYield()
|
||||
bool wxApp::Yield(bool onlyIfNeeded)
|
||||
{
|
||||
#ifdef __WXDEBUG__
|
||||
if (gs_inYield)
|
||||
wxFAIL_MSG( wxT("wxYield called recursively" ) );
|
||||
#endif
|
||||
|
||||
gs_inYield = TRUE;
|
||||
bool s_inYield = FALSE;
|
||||
|
||||
if ( s_inYield )
|
||||
{
|
||||
if ( !onlyIfNeeded )
|
||||
{
|
||||
wxFAIL_MSG( wxT("wxYield called recursively" ) );
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s_inYield = TRUE;
|
||||
|
||||
while (wxTheApp && wxTheApp->Pending())
|
||||
wxTheApp->Dispatch();
|
||||
|
||||
// VZ: is it the same as this (taken from old wxExecute)?
|
||||
#if 0
|
||||
XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll);
|
||||
#endif
|
||||
|
||||
gs_inYield = FALSE;
|
||||
s_inYield = FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Yield to incoming messages; but fail silently if recursion is detected.
|
||||
bool wxYieldIfNeeded()
|
||||
{
|
||||
if (gs_inYield)
|
||||
return FALSE;
|
||||
|
||||
return wxYield();
|
||||
}
|
||||
|
||||
|
||||
// TODO use XmGetPixmap (?) to get the really standard icons!
|
||||
|
||||
#include "wx/generic/info.xpm"
|
||||
|
Reference in New Issue
Block a user