fix object_ref lookup in case when object_ref node didn't specify class

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2002-12-02 18:15:12 +00:00
parent 4c0c84886b
commit 7d0946bee1
2 changed files with 38 additions and 8 deletions

View File

@@ -407,10 +407,25 @@ wxXmlNode *wxXmlResource::DoFindResource(wxXmlNode *parent,
if ( node->GetType() == wxXML_ELEMENT_NODE && if ( node->GetType() == wxXML_ELEMENT_NODE &&
(node->GetName() == wxT("object") || (node->GetName() == wxT("object") ||
node->GetName() == wxT("object_ref")) && node->GetName() == wxT("object_ref")) &&
(!classname || node->GetPropVal(wxT("name"), &dummy) && dummy == name )
node->GetPropVal(wxT("class"), wxEmptyString) == classname) && {
node->GetPropVal(wxT("name"), &dummy) && dummy == name ) wxString cls(node->GetPropVal(wxT("class"), wxEmptyString));
return node; if (!classname || cls == classname)
return node;
// object_ref may not have 'class' property:
if (cls.empty() && node->GetName() == wxT("object_ref"))
{
wxString refName = node->GetPropVal(wxT("ref"), wxEmptyString);
if (refName.empty())
continue;
wxXmlNode* refNode = FindResource(refName, wxEmptyString, TRUE);
if (refNode &&
refNode->GetPropVal(wxT("class"), wxEmptyString) == classname)
{
return node;
}
}
}
} }
if ( recursive ) if ( recursive )

View File

@@ -407,10 +407,25 @@ wxXmlNode *wxXmlResource::DoFindResource(wxXmlNode *parent,
if ( node->GetType() == wxXML_ELEMENT_NODE && if ( node->GetType() == wxXML_ELEMENT_NODE &&
(node->GetName() == wxT("object") || (node->GetName() == wxT("object") ||
node->GetName() == wxT("object_ref")) && node->GetName() == wxT("object_ref")) &&
(!classname || node->GetPropVal(wxT("name"), &dummy) && dummy == name )
node->GetPropVal(wxT("class"), wxEmptyString) == classname) && {
node->GetPropVal(wxT("name"), &dummy) && dummy == name ) wxString cls(node->GetPropVal(wxT("class"), wxEmptyString));
return node; if (!classname || cls == classname)
return node;
// object_ref may not have 'class' property:
if (cls.empty() && node->GetName() == wxT("object_ref"))
{
wxString refName = node->GetPropVal(wxT("ref"), wxEmptyString);
if (refName.empty())
continue;
wxXmlNode* refNode = FindResource(refName, wxEmptyString, TRUE);
if (refNode &&
refNode->GetPropVal(wxT("class"), wxEmptyString) == classname)
{
return node;
}
}
}
} }
if ( recursive ) if ( recursive )