#pragma message disable nosimpint
#endif
#include <Xm/Xm.h>
-#include <Xm/Label.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xresource.h>
END_EVENT_TABLE()
#ifdef __WXDEBUG__
+extern "C"
+{
typedef int (*XErrorHandlerFunc)(Display *, XErrorEvent *);
+}
- XErrorHandlerFunc gs_pfnXErrorHandler = 0;
+XErrorHandlerFunc gs_pfnXErrorHandler = 0;
- static int wxXErrorHandler(Display *dpy, XErrorEvent *xevent)
- {
- // just forward to the default handler for now
- return gs_pfnXErrorHandler(dpy, xevent);
- }
+extern "C"
+{
+
+static int wxXErrorHandler(Display *dpy, XErrorEvent *xevent)
+{
+ // just forward to the default handler for now
+ return gs_pfnXErrorHandler(dpy, xevent);
+}
+
+}
#endif // __WXDEBUG__
-bool wxApp::Initialize(int& argc, wxChar **argv)
+bool wxApp::Initialize(int& argcOrig, wxChar **argvOrig)
{
- if ( !wxAppBase::Initialize(argc, argv) )
+ if ( !wxAppBase::Initialize(argcOrig, argvOrig) )
return false;
wxWidgetHashTable = new wxHashTable(wxKEY_INTEGER);
+#if wxUSE_INTL
+ wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding());
+#endif
+
return true;
}
void wxApp::CleanUp()
{
+ wxAppBase::CleanUp();
+
delete wxWidgetHashTable;
wxWidgetHashTable = NULL;
- wxAppBase::CleanUp();
+ delete m_mainLoop;
+
+ for( wxPerDisplayDataMap::iterator it = m_perDisplayData->begin(),
+ end = m_perDisplayData->end();
+ it != end; ++it )
+ {
+ delete it->second->m_visualInfo;
+ XtDestroyWidget( it->second->m_topLevelWidget );
+ delete it->second;
+ }
+
+ delete m_perDisplayData;
}
void wxApp::Exit()
wxApp::~wxApp()
{
- delete m_mainLoop;
-
- for( wxPerDisplayDataMap::iterator it = m_perDisplayData->begin(),
- end = m_perDisplayData->end();
- it != end; ++it )
- {
- delete it->second->m_visualInfo;
- XtDestroyWidget( it->second->m_topLevelWidget );
- delete it->second;
- }
-
- delete m_perDisplayData;
-
wxApp::SetInstance(NULL);
}
}
static char *fallbackResources[] = {
- "*menuBar.marginHeight: 0",
- "*menuBar.shadowThickness: 1",
- "*background: #c0c0c0",
- "*foreground: black",
+ // better defaults for CDE under Irix
+ //
+ // TODO: do something similar for the other systems, the hardcoded defaults
+ // below are ugly
+#ifdef __SGI__
+ wxMOTIF_STR("*sgiMode: True"),
+ wxMOTIF_STR("*useSchemes: all"),
+#else // !__SGI__
+ wxMOTIF_STR("*menuBar.marginHeight: 0"),
+ wxMOTIF_STR("*menuBar.shadowThickness: 1"),
+ wxMOTIF_STR("*background: #c0c0c0"),
+ wxMOTIF_STR("*foreground: black"),
+#endif // __SGI__/!__SGI__
NULL
};
bool wxApp::OnInitGui()
{
if( !wxAppBase::OnInitGui() )
- return FALSE;
+ return false;
+ XtSetLanguageProc(NULL, NULL, NULL);
XtToolkitInitialize() ;
wxTheApp->m_appContext = (WXAppContext) XtCreateApplicationContext();
XtAppSetFallbackResources((XtAppContext) wxTheApp->m_appContext, fallbackResources);
// if you don't log to stderr, nothing will be shown...
delete wxLog::SetActiveTarget(new wxLogStderr);
wxString className(wxTheApp->GetClassName());
- wxLogError(_("wxWindows could not open display for '%s': exiting."),
+ wxLogError(_("wxWidgets could not open display for '%s': exiting."),
className.c_str());
exit(-1);
}
// Add general resize proc
XtActionsRec rec;
- rec.string = "resize";
+ rec.string = wxMOTIF_STR("resize");
rec.proc = (XtActionProc)wxWidgetResizeProc;
XtAppAddActions((XtAppContext) wxTheApp->m_appContext, &rec, 1);
wxAddIdleCallback();
- return TRUE;
+ return true;
}
WXColormap wxApp::GetMainColormap(WXDisplay* display)
WXWidget wxCreateTopLevelRealizedWidget( WXDisplay* display )
{
- Widget rTlw = XtVaCreateWidget( "dummy_widget", xmLabelWidgetClass,
+ Widget rTlw = XtVaCreateWidget( "dummy_widget", topLevelShellWidgetClass,
(Widget)wxTheApp->GetTopLevelWidget(),
- NULL);
+ NULL, 0 );
XtSetMappedWhenManaged( rTlw, False );
XtRealizeWidget( rTlw );
bool wxApp::Yield(bool onlyIfNeeded)
{
- static bool s_inYield = FALSE;
+ static bool s_inYield = false;
if ( s_inYield )
{
wxFAIL_MSG( wxT("wxYield called recursively" ) );
}
- return FALSE;
+ return false;
}
- s_inYield = TRUE;
+ s_inYield = true;
while (wxTheApp && wxTheApp->Pending())
wxTheApp->Dispatch();
- s_inYield = FALSE;
+ s_inYield = false;
- return TRUE;
+ return true;
}
// ----------------------------------------------------------------------------