- int idx = wxSystemOptionsModule::sm_optionNames.Index(name, FALSE);
- if (idx == wxNOT_FOUND)
- return wxEmptyString;
- else
- return wxSystemOptionsModule::sm_optionValues[idx];
+ wxString val;
+
+ int idx = gs_optionNames.Index(name, false);
+ if ( idx != wxNOT_FOUND )
+ {
+ val = gs_optionValues[idx];
+ }
+ else // not set explicitly
+ {
+ // look in the environment: first for a variable named "wx_appname_name"
+ // which can be set to affect the behaviour or just this application
+ // and then for "wx_name" which can be set to change the option globally
+ wxString var(name);
+ var.Replace(wxT("."), wxT("_")); // '.'s not allowed in env var names
+ var.Replace(wxT("-"), wxT("_")); // and neither are '-'s
+
+ wxString appname;
+ if ( wxTheApp )
+ appname = wxTheApp->GetAppName();
+
+ if ( !appname.empty() )
+ val = wxGetenv(wxT("wx_") + appname + wxT('_') + var);
+
+ if ( val.empty() )
+ val = wxGetenv(wxT("wx_") + var);
+ }
+
+ return val;