X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/96be256b3e1802de10f45953c41ed33bce399b54..9bb50fd0b04c824fc7ba14c0dc4ba4a2a9a1e6ad:/src/motif/app.cpp diff --git a/src/motif/app.cpp b/src/motif/app.cpp index ef63f6206e..ef00606e5f 100644 --- a/src/motif/app.cpp +++ b/src/motif/app.cpp @@ -38,7 +38,6 @@ #pragma message disable nosimpint #endif #include -#include #include #include #include @@ -80,33 +79,58 @@ BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) 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() @@ -134,19 +158,6 @@ wxApp::wxApp() 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); } @@ -177,10 +188,19 @@ void wxApp::HandlePropertyChange(WXEvent *event) } 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 }; @@ -190,6 +210,7 @@ bool wxApp::OnInitGui() if( !wxAppBase::OnInitGui() ) return false; + XtSetLanguageProc(NULL, NULL, NULL); XtToolkitInitialize() ; wxTheApp->m_appContext = (WXAppContext) XtCreateApplicationContext(); XtAppSetFallbackResources((XtAppContext) wxTheApp->m_appContext, fallbackResources); @@ -220,7 +241,7 @@ bool wxApp::OnInitGui() // 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); @@ -307,9 +328,9 @@ WXWidget wxCreateTopLevelWidget( 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 );