- wxTheApp->argv[mb_argc] = wxStrdup(wxConvLibc.cMB2WX(argv[mb_argc]));
- mb_argc++;
- }
- wxTheApp->argv[mb_argc] = (wxChar *)NULL;
-#else
- wxTheApp->argv = argv;
-#endif
-
- wxString name(wxFileNameFromPath(argv[0]));
- wxStripExtension( name );
- wxTheApp->SetAppName( name );
-
- int retValue;
- retValue = wxEntryInitGui();
-
- // Here frames insert themselves automatically into wxTopLevelWindows by
- // getting created in OnInit().
- if ( retValue == 0 )
- {
- if ( !wxTheApp->OnInit() )
- retValue = -1;
- }
-
- if ( retValue == 0 )
- {
- /* delete pending toplevel windows (typically a single
- dialog) so that, if there isn't any left, we don't
- call OnRun() */
- wxTheApp->DeletePendingObjects();
-
- wxTheApp->m_initialized = wxTopLevelWindows.GetCount() != 0;
-
- if (wxTheApp->Initialized())
- {
- wxTheApp->OnRun();
-
- wxWindow *topWindow = wxTheApp->GetTopWindow();
- if (topWindow)
- {
- /* Forcibly delete the window. */
- if (topWindow->IsKindOf(CLASSINFO(wxFrame)) ||
- topWindow->IsKindOf(CLASSINFO(wxDialog)) )
- {
- topWindow->Close( TRUE );
- wxTheApp->DeletePendingObjects();
- }
- else
- {
- delete topWindow;
- wxTheApp->SetTopWindow( (wxWindow*) NULL );
- }
- }
-
- retValue = wxTheApp->OnExit();
- }
+ // Currently we just check for this environment variable because this
+ // is how support for the global menu is implemented under Ubuntu.
+ //
+ // If we ever get false positives, we could also check for
+ // XDG_CURRENT_DESKTOP env var being set to "Unity".
+ wxString proxy;
+ s_isUsingGlobalMenu = wxGetEnv("UBUNTU_MENUPROXY", &proxy) &&
+ !proxy.empty() && proxy != "0";