+ 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
+ };
+ XtAppSetFallbackResources((XtAppContext) wxTheApp->m_appContext, fallbackResources);
+
+ // 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");
+
+ // FIXME-UTF8: This code is taken from wxGTK and duplicated here. This
+ // is just a temporary fix to make wxX11 compile in Unicode
+ // build, the real fix is to change Initialize()'s signature
+ // to use char* on Unix.
+#if wxUSE_UNICODE
+ // XtOpenDisplay() wants char*, not wchar_t*, so convert
+ int i;
+ char **argvX11 = new char *[argc + 1];
+ for ( i = 0; i < argc; i++ )
+ {
+ argvX11[i] = strdup(wxConvLibc.cWX2MB(argv_[i]));
+ }
+
+ argvX11[argc] = NULL;
+
+ int argcX11 = argc;
+
+ Display *dpy = XtOpenDisplay((XtAppContext) wxTheApp->m_appContext,
+ (String)NULL,
+ appname.c_str(),
+ clsname.c_str(),
+ NULL, 0, // no options
+# if XtSpecificationRelease < 5
+ (Cardinal*) &argcX11,
+# else
+ &argcX11,
+# endif
+ argvX11);
+
+ if ( argcX11 != argc )
+ {
+ // we have to drop the parameters which were consumed by X11+
+ for ( i = 0; i < argcX11; i++ )
+ {
+ while ( strcmp(wxConvLibc.cWX2MB(argv_[i]), argvX11[i]) != 0 )
+ {
+ memmove(argv_ + i, argv_ + i + 1, (argc - i)*sizeof(*argv_));
+ }
+ }
+
+ argc = argcX11;
+
+ // update internal arg[cv] as X11 may have removed processed options:
+ argc = argc_;
+ argv = argv_;
+ }
+ //else: XtOpenDisplay() didn't modify our parameters
+
+ // free our copy
+ for ( i = 0; i < argcX11; i++ )
+ {
+ free(argvX11[i]);
+ }
+
+ delete [] argvX11;
+
+#else // ANSI
+
+ 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
+ &argc,
+# endif
+ argv);
+
+#endif // Unicode/ANSI
+
+ if (!dpy) {
+ // if you don't log to stderr, nothing will be shown...
+ delete wxLog::SetActiveTarget(new wxLogStderr);
+ wxString className(wxTheApp->GetClassName());
+ wxLogError(_("wxWidgets could not open display for '%s': exiting."),
+ className.c_str());
+ exit(-1);
+ }
+ m_initialDisplay = (WXDisplay*) dpy;
+
+#ifdef __WXDEBUG__
+ // install the X error handler
+ gs_pfnXErrorHandler = XSetErrorHandler(wxXErrorHandler);
+#endif // __WXDEBUG__
+
+ // Add general resize proc
+ XtActionsRec rec;
+ rec.string = wxMOTIF_STR("resize");
+ rec.proc = (XtActionProc)wxWidgetResizeProc;
+ XtAppAddActions((XtAppContext) wxTheApp->m_appContext, &rec, 1);
+
+ GetMainColormap(dpy);
+
+ wxAddIdleCallback();