X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f9d243a306f4249af2e70f6ee6b625f3731e6db9..1d529ef7eed851db9d007821decb9639e4e7fc16:/contrib/src/xrc/xmlres.cpp diff --git a/contrib/src/xrc/xmlres.cpp b/contrib/src/xrc/xmlres.cpp index d795abd509..9da7526c05 100644 --- a/contrib/src/xrc/xmlres.cpp +++ b/contrib/src/xrc/xmlres.cpp @@ -60,7 +60,6 @@ wxXmlResource *wxXmlResource::ms_instance = NULL; wxXmlResource::wxXmlResource(int flags) { - m_handlers.DeleteContents(TRUE); m_flags = flags; m_version = -1; } @@ -69,7 +68,6 @@ wxXmlResource::wxXmlResource(const wxString& filemask, int flags) { m_flags = flags; m_version = -1; - m_handlers.DeleteContents(TRUE); Load(filemask); } @@ -163,7 +161,7 @@ void wxXmlResource::InsertHandler(wxXmlResourceHandler *handler) void wxXmlResource::ClearHandlers() { - m_handlers.Clear(); + WX_CLEAR_LIST(wxList, m_handlers); } @@ -326,6 +324,7 @@ bool wxXmlResource::UpdateResources() bool modif; # if wxUSE_FILESYSTEM wxFSFile *file = NULL; + wxUnusedVar(file); wxFileSystem fsys; # endif @@ -355,6 +354,7 @@ bool wxXmlResource::UpdateResources() rt = false; } wxDELETE(file); + wxUnusedVar(file); # else modif = wxDateTime(wxFileModificationTime(m_data[i].File)) > m_data[i].Time; # endif @@ -415,6 +415,7 @@ bool wxXmlResource::UpdateResources() # if wxUSE_FILESYSTEM wxDELETE(file); + wxUnusedVar(file); # else wxDELETE(stream); # endif @@ -586,7 +587,7 @@ wxObject *wxXmlResource::CreateResFromNode(wxXmlNode *node, wxObject *parent, } else if (node->GetName() == wxT("object")) { - wxNode *ND = m_handlers.GetFirst(); + wxList::compatibility_iterator ND = m_handlers.GetFirst(); while (ND) { handler = (wxXmlResourceHandler*)ND->GetData(); @@ -616,7 +617,6 @@ wxXmlSubclassFactoriesList *wxXmlResource::ms_subclassFactories = NULL; if (!ms_subclassFactories) { ms_subclassFactories = new wxXmlSubclassFactoriesList; - ms_subclassFactories->DeleteContents(TRUE); } ms_subclassFactories->Append(factory); } @@ -662,7 +662,7 @@ wxObject *wxXmlResourceHandler::CreateResource(wxXmlNode *node, wxObject *parent wxString subclass = node->GetPropVal(wxT("subclass"), wxEmptyString); if (!subclass.empty()) { - for (wxXmlSubclassFactoriesList::Node *i = wxXmlResource::ms_subclassFactories->GetFirst(); + for (wxXmlSubclassFactoriesList::compatibility_iterator i = wxXmlResource::ms_subclassFactories->GetFirst(); i; i = i->GetNext()) { m_instance = i->GetData()->Create(subclass); @@ -715,6 +715,7 @@ void wxXmlResourceHandler::AddWindowStyles() XRC_ADD_STYLE(wxTRANSPARENT_WINDOW); XRC_ADD_STYLE(wxWANTS_CHARS); XRC_ADD_STYLE(wxNO_FULL_REPAINT_ON_RESIZE); + XRC_ADD_STYLE(wxWS_EX_BLOCK_EVENTS); } @@ -751,7 +752,8 @@ int wxXmlResourceHandler::GetStyle(const wxString& param, int defaults) wxString wxXmlResourceHandler::GetText(const wxString& param, bool translate) { - wxString str1(GetParamValue(param)); + wxXmlNode *parNode = GetParamNode(param); + wxString str1(GetNodeContent(parNode)); wxString str2; const wxChar *dt; wxChar amp_char; @@ -787,11 +789,31 @@ wxString wxXmlResourceHandler::GetText(const wxString& param, bool translate) else str2 << *dt; } - if (translate && m_resource->GetFlags() & wxXRC_USE_LOCALE) - return wxGetTranslation(str2); + if (m_resource->GetFlags() & wxXRC_USE_LOCALE) + { + if (translate && parNode && + parNode->GetPropVal(wxT("translate"), wxEmptyString) != wxT("0")) + { + return wxGetTranslation(str2); + } + else + { +#if wxUSE_UNICODE + return str2; +#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); +#endif + } + } else + { + // If wxXRC_USE_LOCALE is not set, then the string is already in + // system's default encoding in ANSI build, so we don't have to + // do anything special here. return str2; - + } } @@ -1183,14 +1205,12 @@ static int XRCID_Lookup(const wxChar *str_id, int value_if_not_found = -2) index %= XRCID_TABLE_SIZE; XRCID_record *oldrec = NULL; - int matchcnt = 0; for (XRCID_record *rec = XRCID_Records[index]; rec; rec = rec->next) { if (wxStrcmp(rec->key, str_id) == 0) { return rec->id; } - matchcnt++; oldrec = rec; } @@ -1286,6 +1306,8 @@ public: void OnExit() { delete wxXmlResource::Set(NULL); + if(wxXmlResource::ms_subclassFactories) + WX_CLEAR_LIST(wxXmlSubclassFactoriesList, *wxXmlResource::ms_subclassFactories); wxDELETE(wxXmlResource::ms_subclassFactories); CleanXRCID_Records(); }