]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/app.cpp
Added compile guards to wxEditableListBox
[wxWidgets.git] / src / motif / app.cpp
index 1b899d82cad8f69a62bc8e1e198fe525274a152e..e36d19b6e6f2873f01de6bb3e70a2e6c0be642a8 100644 (file)
 #endif
 
 #include "wx/app.h"
-#include "wx/utils.h"
-#include "wx/module.h"
-#include "wx/memory.h"
-#include "wx/log.h"
-#include "wx/intl.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/hash.h"
+    #include "wx/intl.h"
+    #include "wx/log.h"
+    #include "wx/utils.h"
+    #include "wx/memory.h"
+    #include "wx/font.h"
+#endif
+
 #include "wx/evtloop.h"
-#include "wx/hash.h"
 
 #if wxUSE_THREADS
     #include "wx/thread.h"
 #endif
 
 #ifdef __VMS__
-#pragma message disable nosimpint
+    #pragma message disable nosimpint
 #endif
 #include <Xm/Xm.h>
 #include <X11/Xlib.h>
@@ -39,7 +43,7 @@
 #include <X11/Xresource.h>
 #include <X11/Xatom.h>
 #ifdef __VMS__
-#pragma message enable nosimpint
+    #pragma message enable nosimpint
 #endif
 
 #include "wx/motif/private.h"
@@ -63,7 +67,6 @@ static void wxTLWidgetDestroyCallback(Widget w, XtPointer clientData,
                                       XtPointer ptr);
 static WXWidget wxCreateTopLevelWidget( WXDisplay* display );
 
-extern wxList wxPendingDelete;
 extern bool wxAddIdleCallback();
 
 wxHashTable *wxWidgetHashTable = NULL;
@@ -96,15 +99,15 @@ static int wxXErrorHandler(Display *dpy, XErrorEvent *xevent)
 
 bool wxApp::Initialize(int& argcOrig, wxChar **argvOrig)
 {
+#if wxUSE_INTL
+    wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding());
+#endif
+
     if ( !wxAppBase::Initialize(argcOrig, argvOrig) )
         return false;
 
     wxWidgetHashTable = new wxHashTable(wxKEY_INTEGER);
 
-#if wxUSE_INTL
-    wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding());
-#endif
-
     return true;
 }
 
@@ -129,8 +132,6 @@ void wxApp::CleanUp()
 #endif
         delete it->second;
     }
-
-    delete m_perDisplayData;
 }
 
 void wxApp::Exit()
@@ -158,7 +159,7 @@ wxApp::wxApp()
 
 wxApp::~wxApp()
 {
-    wxApp::SetInstance(NULL);
+    delete m_perDisplayData;
 }
 
 int wxApp::MainLoop()
@@ -196,10 +197,17 @@ static char *fallbackResources[] = {
     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"),
+#if !wxMOTIF_USE_RENDER_TABLE
+    wxMOTIF_STR("*.fontList: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*"),
+#else
+    wxMOTIF_STR("*wxDefaultRendition.fontName: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*"),
+    wxMOTIF_STR("*wxDefaultRendition.fontType: FONT_IS_FONTSET"),
+    wxMOTIF_STR("*.renderTable: wxDefaultRendition"),
+#endif
+    wxMOTIF_STR("*listBox.background: white"),
+    wxMOTIF_STR("*text.background: white"),
+    wxMOTIF_STR("*comboBox.Text.background: white"),
+    wxMOTIF_STR("*comboBox.List.background: white"),
 #endif // __SGI__/!__SGI__
     NULL
 };
@@ -247,8 +255,20 @@ bool wxApp::OnInitGui()
     wxTheApp->m_appContext = (WXAppContext) XtCreateApplicationContext();
     XtAppSetFallbackResources((XtAppContext) wxTheApp->m_appContext, fallbackResources);
 
-    Display *dpy = XtOpenDisplay((XtAppContext) wxTheApp->m_appContext,(String)NULL,NULL,
-        wxTheApp->GetClassName().c_str(), NULL, 0,
+    // we shouldn't pass empty application/class name as it results in
+    // immediate crash inside XOpenIM() (if XIM is used) under IRIX
+    wxString appname = wxTheApp->GetAppName();
+    if ( appname.empty() )
+        appname = _T("wxapp");
+    wxString clsname = wxTheApp->GetClassName();
+    if ( clsname.empty() )
+        clsname = _T("wx");
+
+    Display *dpy = XtOpenDisplay((XtAppContext) wxTheApp->m_appContext,
+        (String)NULL,
+        appname.c_str(),
+        clsname.c_str(),
+        NULL, 0,    // no options
 # if XtSpecificationRelease < 5
         (Cardinal*) &argc,
 # else
@@ -362,7 +382,7 @@ WXWidget wxCreateTopLevelRealizedWidget( WXDisplay* WXUNUSED(display) )
 {
     Widget rTlw = XtVaCreateWidget( "dummy_widget", topLevelShellWidgetClass,
                                     (Widget)wxTheApp->GetTopLevelWidget(),
-                                     NULL, 0 );
+                                     NULL );
     XtSetMappedWhenManaged( rTlw, False );
     XtRealizeWidget( rTlw );