+#if !wxUSE_NANOX
+ if (event->type == LeaveNotify || event->type == EnterNotify)
+ {
+ // Throw out NotifyGrab and NotifyUngrab
+ if (event->xcrossing.mode != NotifyNormal)
+ return FALSE;
+ }
+#endif
+ wxMouseEvent wxevent;
+ wxTranslateMouseEvent(wxevent, win, window, event);
+ return win->GetEventHandler()->ProcessEvent( wxevent );
+ }
+ case FocusIn:
+ {
+#if !wxUSE_NANOX
+ if ((event->xfocus.detail != NotifyPointer) &&
+ (event->xfocus.mode == NotifyNormal))
+#endif
+ {
+ wxLogTrace( _T("focus"), _T("FocusIn from %s of type %s"), win->GetName().c_str(), win->GetClassInfo()->GetClassName() );
+
+ extern wxWindow* g_GettingFocus;
+ if (g_GettingFocus && g_GettingFocus->GetParent() == win)
+ {
+ // Ignore this, this can be a spurious FocusIn
+ // caused by a child having its focus set.
+ g_GettingFocus = NULL;
+ wxLogTrace( _T("focus"), _T("FocusIn from %s of type %s being deliberately ignored"), win->GetName().c_str(), win->GetClassInfo()->GetClassName() );
+ return TRUE;
+ }
+ else
+ {
+ wxFocusEvent focusEvent(wxEVT_SET_FOCUS, win->GetId());
+ focusEvent.SetEventObject(win);
+ focusEvent.SetWindow( g_prevFocus );
+ g_prevFocus = NULL;
+
+ return win->GetEventHandler()->ProcessEvent(focusEvent);
+ }
+ }
+ return FALSE;
+ break;
+ }
+ case FocusOut:
+ {
+#if !wxUSE_NANOX
+ if ((event->xfocus.detail != NotifyPointer) &&
+ (event->xfocus.mode == NotifyNormal))
+#endif
+ {
+ wxLogTrace( _T("focus"), _T("FocusOut from %s of type %s"), win->GetName().c_str(), win->GetClassInfo()->GetClassName() );
+
+ wxFocusEvent focusEvent(wxEVT_KILL_FOCUS, win->GetId());
+ focusEvent.SetEventObject(win);
+ focusEvent.SetWindow( g_nextFocus );
+ g_nextFocus = NULL;
+ return win->GetEventHandler()->ProcessEvent(focusEvent);
+ }
+ return FALSE;
+ break;
+ }
+ default:
+ {
+#ifdef __WXDEBUG__
+ //wxString eventName = wxGetXEventName(XEvent& event);
+ //wxLogDebug(wxT("Event %s not handled"), eventName.c_str());
+#endif
+ return FALSE;
+ break;
+ }