TreeModelRow does not consider do_get_value implementation for a custom model.
Submitted by Manuel Quiñones
Link to original bug (#689277)
Description
Having a custom model that inherits Gtk.TreeModel and implements do_get_value, calling row[model_index] I get this traceback:
Traceback (most recent call last):
File "/home/erikos/sugar-build/install/lib/python2.7/site-packages/jarabe/journal/listview.py", line 668, in create_palette
if row[self._model_column_index] is not None:
File "/home/erikos/sugar-build/install/lib/python2.7/site-packages/gi/overrides/Gtk.py", line 1136, in __getitem__
return self.model.get_value(self.iter, key)
File "/home/erikos/sugar-build/install/lib/python2.7/site-packages/gi/types.py", line 47, in function
return info.invoke(*args, **kwargs)
TypeError: unknown type (null)
I see pygobject has an override [1] which is calling get_value in the model. So replacing my code like this is the same:
- if row[self._model_column_index] is not None:
- nick, xo_color = row[self._model_column_index]
+ if row.model.get_value(row.iter, self._model_column_index) is not None:
+ nick, xo_color = row.model.get_value(row.iter, self._model_column_index)
Now if I rename get_value by do_get_value, I get the expected result.
- if row[self._model_column_index] is not None:
- nick, xo_color = row[self._model_column_index]
+ if row.model.do_get_value(row.iter, self._model_column_index) is not None:
+ nick, xo_color = row.model.do_get_value(row.iter, self._model_column_index)
[1] http://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py#n1132
Depends on
Edited by Christoph Reiter