#else
// The string is internally stored as UTF-8, we have to convert
// it into system's default encoding so that it can be displayed:
- return wxString(str2.mb_str(wxConvUTF8), wxConvLocal);
+ return wxString(str2.wc_str(wxConvUTF8), wxConvLocal);
#endif
}
}
{
wxString str = GetParamValue(param);
+#if wxUSE_LOCALE
// strings in XRC always use C locale but wxString::ToDouble() uses the
// current one, so transform the string to it supposing that the only
// difference between them is the decimal separator
// TODO: use wxString::ToCDouble() when we have it
str.Replace(wxT("."), wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT,
wxLOCALE_CAT_NUMBER));
+#endif // wxUSE_LOCALE
double value;
if (!str.ToDouble(&value))
// --------------- module and globals -----------------------------
+// normally we would do the cleanup from wxXmlResourceModule::OnExit() but it
+// can happen that some XRC records have been created because of the use of
+// XRCID() in event tables, which happens during static objects initialization,
+// but then the application initialization failed and so the wx modules were
+// neither initialized nor cleaned up -- this static object does the cleanup in
+// this case
+static struct wxXRCStaticCleanup
+{
+ ~wxXRCStaticCleanup() { CleanXRCID_Records(); }
+} s_staticCleanup;
+
class wxXmlResourceModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxXmlResourceModule)