#include "wx/gtk/win_gtk.h"
#include "wx/gtk/private.h"
+#include "wx/apptrait.h"
#include <gdk/gdkx.h>
#else
init_result = gtk_init_check( &argcGTK, &argvGTK );
#endif
+ wxUpdateLocaleIsUtf8();
if ( argcGTK != argc )
{
init_result = gtk_init_check( &argc, &argv );
#endif // wxUSE_UNICODE/!wxUSE_UNICODE
- if (!init_result) {
- wxLogError(wxT("Unable to initialize gtk, is DISPLAY set properly?"));
+ // update internal arg[cv] as GTK+ may have removed processed options:
+ 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?"));
return false;
}