#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>
#include <X11/Xresource.h>
#include <X11/Xatom.h>
#ifdef __VMS__
-#pragma message enable nosimpint
+ #pragma message enable nosimpint
#endif
#include "wx/motif/private.h"
XtPointer ptr);
static WXWidget wxCreateTopLevelWidget( WXDisplay* display );
-extern wxList wxPendingDelete;
extern bool wxAddIdleCallback();
wxHashTable *wxWidgetHashTable = NULL;
IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler)
-BEGIN_EVENT_TABLE(wxApp, wxEvtHandler)
- EVT_IDLE(wxAppBase::OnIdle)
-END_EVENT_TABLE()
-
#ifdef __WXDEBUG__
extern "C"
{
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;
}
#endif
delete it->second;
}
-
- delete m_perDisplayData;
}
void wxApp::Exit()
wxApp::~wxApp()
{
- wxApp::SetInstance(NULL);
+ delete m_perDisplayData;
}
int wxApp::MainLoop()
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
};
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;
+ }
+ //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(),
# endif
argv);
+#endif // Unicode/ANSI
+
if (!dpy) {
// if you don't log to stderr, nothing will be shown...
delete wxLog::SetActiveTarget(new wxLogStderr);
{
Widget rTlw = XtVaCreateWidget( "dummy_widget", topLevelShellWidgetClass,
(Widget)wxTheApp->GetTopLevelWidget(),
- NULL, 0 );
+ NULL );
XtSetMappedWhenManaged( rTlw, False );
XtRealizeWidget( rTlw );