m_showIconic = FALSE;
m_initialSize = wxDefaultSize;
+#if !wxUSE_NANOX
m_visualColormap = NULL;
m_colorCube = NULL;
+#endif
}
wxApp::~wxApp()
{
+#if !wxUSE_NANOX
if (m_colorCube)
free( m_colorCube );
if (m_visualColormap)
delete [] (XColor*)m_visualColormap;
+#endif
}
bool wxApp::Initialized()
{
case Expose:
{
-#if wxUSE_TWO_WINDOWS
+#if wxUSE_TWO_WINDOWS && !wxUSE_NANOX
if (event->xexpose.window != (Window)win->GetClientWindow())
{
XEvent tmp_event;
#if !wxUSE_NANOX
case GraphicsExpose:
{
- // wxLogDebug( "GraphicsExpose from %s", win->GetName().c_str(),
- // event->xgraphicsexpose.x, event->xgraphicsexpose.y,
- // event->xgraphicsexpose.width, event->xgraphicsexpose.height);
+ printf( "GraphicExpose event\n" );
+
+ wxLogTrace( _T("expose"), _T("GraphicsExpose from %s"), win->GetName().c_str(),
+ event->xgraphicsexpose.x, event->xgraphicsexpose.y,
+ event->xgraphicsexpose.width, event->xgraphicsexpose.height);
win->GetUpdateRegion().Union( event->xgraphicsexpose.x, event->xgraphicsexpose.y,
event->xgraphicsexpose.width, event->xgraphicsexpose.height);
{
if (!win->IsEnabled())
return FALSE;
-
+
// Here we check if the top level window is
// disabled, which is one aspect of modality.
wxWindow *tlw = win;
g_prevFocus = wxWindow::FindFocus();
g_nextFocus = win;
+ wxLogTrace( _T("focus"), _T("About to call SetFocus on %s of type %s due to button press"), win->GetName().c_str(), win->GetClassInfo()->GetClassName() );
+
+ // Record the fact that this window is
+ // getting the focus, because we'll need to
+ // check if its parent is getting a bogus
+ // focus and duly ignore it.
+ // TODO: may need to have this code in SetFocus, too.
+ extern wxWindow* g_GettingFocus;
+ g_GettingFocus = win;
win->SetFocus();
}
}
(event->xfocus.mode == NotifyNormal))
#endif
{
- // wxLogDebug( "FocusIn from %s of type %s", win->GetName().c_str(), win->GetClassInfo()->GetClassName() );
-
- wxFocusEvent focusEvent(wxEVT_SET_FOCUS, win->GetId());
- focusEvent.SetEventObject(win);
- focusEvent.SetWindow( g_prevFocus );
- g_prevFocus = NULL;
+ 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 win->GetEventHandler()->ProcessEvent(focusEvent);
+ }
}
return FALSE;
break;
(event->xfocus.mode == NotifyNormal))
#endif
{
- // wxLogDebug( "FocusOut from %s of type %s", win->GetName().c_str(), win->GetClassInfo()->GetClassName() );
+ 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);
win->GetEventHandler()->ProcessEvent(event);
- win->OnInternalIdle();
-
if (event.MoreRequested())
needMore = TRUE;
node = node->Next();
}
+ win->OnInternalIdle();
+
return needMore;
}
m_maxRequestSize = XMaxRequestSize( (Display*) wxApp::GetDisplay() );
+#if !wxUSE_NANOX
// Get info about the current visual. It is enough
// to do this once here unless we support different
// visuals, displays and screens. Given that wxX11
}
}
}
+#endif
return TRUE;
}
return TRUE;
}
-void wxApp::OnAssert(const wxChar *file, int line, const wxChar *msg)
+#ifdef __WXDEBUG__
+
+void wxApp::OnAssert(const wxChar *file, int line, const wxChar* cond, const wxChar *msg)
{
// While the GUI isn't working that well, just print out the
// message.
-#if 0
- wxAppBase::OnAssert(file, line, msg);
+#if 1
+ wxAppBase::OnAssert(file, line, cond, msg);
#else
wxString msg2;
msg2.Printf("At file %s:%d: %s", file, line, msg);
#endif
}
+#endif // __WXDEBUG__
+