use unsgined int instead of int for 1 bit bitfields (SGI CC warning fix)
[wxWidgets.git] / src / motif / app.cpp
index 30ddd80a6d13a551d773f0b145ea8195e5c123c7..ef00606e5fc75f266581495f6cae0525199fc06e 100644 (file)
@@ -38,7 +38,6 @@
 #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>
@@ -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
 };
 
@@ -188,8 +208,9 @@ static char *fallbackResources[] = {
 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);
@@ -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);
 
@@ -228,7 +249,7 @@ bool wxApp::OnInitGui()
 
     wxAddIdleCallback();
 
-    return TRUE;
+    return true;
 }
 
 WXColormap wxApp::GetMainColormap(WXDisplay* display)
@@ -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 );
 
@@ -360,7 +381,7 @@ void wxApp::SetTopLevelRealizedWidget(WXDisplay* display, WXWidget widget)
 
 bool wxApp::Yield(bool onlyIfNeeded)
 {
-    static bool s_inYield = FALSE;
+    static bool s_inYield = false;
 
     if ( s_inYield )
     {
@@ -369,17 +390,17 @@ bool wxApp::Yield(bool onlyIfNeeded)
             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;
 }
 
 // ----------------------------------------------------------------------------