diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 31f446d8b6..ff408b679d 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -456,6 +456,38 @@ bool wxApp::Initialize(int& argc, wxChar **argv) this->argc = argc; this->argv = argv; + if ( m_traits ) + { + // if there are still GTK+ standard options unparsed in the command + // line, it means that they were not syntactically correct and GTK+ + // already printed a warning on the command line and we should now + // exit: + wxArrayString opt, desc; + m_traits->GetStandardCmdLineOptions(opt, desc); + + for ( int i = 0; i < argc; i++ ) + { + // leave just the names of the options with values + const wxString str(wxString(argv[i]).BeforeFirst('=')); + + for ( size_t j = 0; j < opt.size(); j++ ) + { + // remove the leading spaces from the option string as it does + // have them + if ( opt[j].Trim(false).BeforeFirst('=') == str ) + { + // a GTK+ option can be left on the command line only if + // there was an error in (or before, in another standard + // options) it, so abort, just as we do if incorrect + // program option is given + wxLogError(_("Invalid GTK+ command line option, use \"%s --help\""), + argv[0]); + return false; + } + } + } + } + if ( !init_result ) { wxLogError(_("Unable to initialize GTK+, is DISPLAY set properly?"));