// need to build the list of strings from children
m_insideBox = true;
CreateChildrenPrivately(NULL, GetParamNode(wxT("content")));
- wxString *strings = (wxString *) NULL;
- if (strList.GetCount() > 0)
- {
- strings = new wxString[strList.GetCount()];
- int count = strList.GetCount();
- for (int i = 0; i < count; i++)
- strings[i]=strList[i];
- }
XRC_MAKE_INSTANCE(control, wxOwnerDrawnComboBox)
GetID(),
GetText(wxT("value")),
GetPosition(), GetSize(),
- strList.GetCount(),
- strings,
+ strList,
GetStyle(),
wxDefaultValidator,
GetName());
- wxSize ButtonSize=GetSize(wxT("buttonsize"));
+ wxSize sizeBtn=GetSize(wxT("buttonsize"));
- if (ButtonSize != wxDefaultSize)
- control->SetButtonPosition(ButtonSize.GetWidth(), ButtonSize.GetHeight());
+ if (sizeBtn != wxDefaultSize)
+ control->SetButtonPosition(sizeBtn.GetWidth(), sizeBtn.GetHeight());
if (selection != -1)
control->SetSelection(selection);
SetupWindow(control);
- if (strings != NULL)
- delete[] strings;
strList.Clear(); // dump the strings
return control;
// add to the list
wxString str = GetNodeContent(m_node);
if (m_resource->GetFlags() & wxXRC_USE_LOCALE)
- str = wxGetTranslation(str);
+ str = wxGetTranslation(str, m_resource->GetDomain());
strList.Add(str);
return NULL;
bool wxOwnerDrawnComboBoxXmlHandler::CanHandle(wxXmlNode *node)
{
-// Avoid GCC bug - this fails on certain GCC 3.x builds for an unknown reason
-// return (IsOfClass(node, wxT("wxOwnerDrawnComboBox")) ||
-// (m_insideBox && node->GetName() == wxT("item")));
+#if wxCHECK_VERSION(2,7,0)
- bool fOurClass = node->GetPropVal(wxT("class"), wxEmptyString) == wxT("wxOwnerDrawnComboBox");
+ return (IsOfClass(node, wxT("wxOwnerDrawnComboBox")) ||
+ (m_insideBox && node->GetName() == wxT("item")));
+
+#else
+
+// Avoid GCC bug - this fails on certain GCC 3.3 and 3.4 builds for an unknown reason
+// it is believed to be related to the fact IsOfClass is inline, and node->GetAttribute
+// gets passed an invalid "this" pointer. On 2.7, the function is out of line, so the
+// above should work fine. This code is left in here so this file can easily be used
+// in a version backported to 2.6. All we are doing here is expanding the macro
+
+ bool fOurClass = node->GetAttribute(wxT("class"), wxEmptyString) == wxT("wxOwnerDrawnComboBox");
return (fOurClass ||
(m_insideBox && node->GetName() == wxT("item")));
-
+#endif
}
#endif // wxUSE_XRC && wxUSE_ODCOMBOBOX