diff options
Diffstat (limited to 'gui/pages.cpp')
-rw-r--r-- | gui/pages.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/gui/pages.cpp b/gui/pages.cpp index 3abd28785..0a1de96f3 100644 --- a/gui/pages.cpp +++ b/gui/pages.cpp @@ -137,20 +137,20 @@ xml_node<>* FindNode(xml_node<>* parent, const char* nodename, int depth /* = 0 style = style->next_sibling("style"); } } else { - // Search for stylename in the parent node <object type="foo" stylename="foo2"> + // Search for stylename in the parent node <object type="foo" style="foo2"> xml_attribute<>* attr = parent->first_attribute("style"); // If no style is found anywhere else and the node wasn't found in the object itself // as a special case we will search for a style that uses the same style name as the // object type, so <object type="button"> would search for a style named "button" if (!attr) attr = parent->first_attribute("type"); - if (attr) { - xml_node<>* node = PageManager::FindStyle(attr->value()); - if (node) { - xml_node<>* stylenode = FindNode(node, nodename, depth + 1); - if (stylenode) - return stylenode; - } + // if there's no attribute type, the object type must be the element name + std::string stylename = attr ? attr->value() : parent->name(); + xml_node<>* node = PageManager::FindStyle(stylename); + if (node) { + xml_node<>* stylenode = FindNode(node, nodename, depth + 1); + if (stylenode) + return stylenode; } } return NULL; |