Do not iterate recursively over all child nodes.

2007-09-04  Johan Dahlin  <jdahlin@async.com.br>

    * gtk/gtk-builder-convert (GtkBuilder._packing_prop_to_child_attr):
    Do not iterate recursively over all child nodes.
    (GtkBuilderConverter._default_widget_converter): Use a more efficient
    way of iterating over all property nodes
    #472974 (Carlos Garnacho)


svn path=/trunk/; revision=18721
This commit is contained in:
Johan Dahlin
2007-09-04 12:19:37 +00:00
committed by Johan Dahlin
parent 395c785512
commit c99040a4b3
2 changed files with 18 additions and 4 deletions

View File

@ -8,6 +8,12 @@
empty properties, since we do not know the default GParamSpec values. empty properties, since we do not know the default GParamSpec values.
#472981 (Carlos Garnacho) #472981 (Carlos Garnacho)
* gtk/gtk-builder-convert (GtkBuilder._packing_prop_to_child_attr):
Do not iterate recursively over all child nodes.
(GtkBuilderConverter._default_widget_converter): Use a more efficient
way of iterating over all property nodes
#472974 (Carlos Garnacho)
2007-09-03 Emmanuele Bassi <ebassi@gnome.org> 2007-09-03 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkrecentmanager.c * gtk/gtkrecentmanager.c

View File

@ -92,6 +92,16 @@ def get_signal_nodes(node):
signals.append(child) signals.append(child)
return signals return signals
def get_property_nodes(node):
assert node.tagName == 'object'
properties = []
for child in node.childNodes:
if child.nodeType == Node.TEXT_NODE:
continue
if child.tagName == 'property':
properties.append(child)
return properties
def get_accelerator_nodes(node): def get_accelerator_nodes(node):
assert node.tagName == 'object' assert node.tagName == 'object'
accelerators = [] accelerators = []
@ -240,9 +250,7 @@ class GtkBuilderConverter(object):
def _default_widget_converter(self, node): def _default_widget_converter(self, node):
klass = node.getAttribute("class") klass = node.getAttribute("class")
for prop in node.getElementsByTagName("property"): for prop in get_property_nodes(node):
if prop.parentNode is not node:
continue
prop_name = prop.getAttribute("name") prop_name = prop.getAttribute("name")
if prop_name == "sizegroup": if prop_name == "sizegroup":
self._convert_sizegroup(node, prop) self._convert_sizegroup(node, prop)
@ -560,7 +568,7 @@ class GtkBuilderConverter(object):
def _packing_prop_to_child_attr(self, node, prop_name, prop_val, def _packing_prop_to_child_attr(self, node, prop_name, prop_val,
attr_val=None): attr_val=None):
for child in node.getElementsByTagName("child"): for child in get_child_nodes(node):
packing_props = [p for p in child.childNodes if p.nodeName == "packing"] packing_props = [p for p in child.childNodes if p.nodeName == "packing"]
if not packing_props: if not packing_props:
continue continue