** Description changed:
Same for Gtk-2.0.gir
The get_iter method is overriden by models to return a custom iter. The
GtkTreeIter is initialised by the caller and passed to the callee who will fill
in the user_data attribute.
Since the direction is set to "out", the param cannot be passed to the callee
(e.g. using pygobject).
This makes it impossible to implement custom TreeModels with pygobject.
- A fix will be to change the direction to "inout" so that the argument gets
passed to the callee.
+ A fix will be to change the direction to "in" so that the argument gets
passed to the callee ("inout" seems not to work :/).
- <virtual-method name="get_iter" invoker="get_iter">
- <doc xml:whitespace="preserve">Sets @iter to a valid iterator
pointing to @path. If @path does
- not exist, @iter is set to an invalid iterator and %FALSE is returned.</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">%TRUE, if @iter was set</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="iter"
- direction="out"
- caller-allocates="1"
- transfer-ownership="none">
- <doc xml:whitespace="preserve">the uninitialized
#GtkTreeIter</doc>
- <type name="TreeIter" c:type="GtkTreeIter*"/>
- </parameter>
- <parameter name="path" transfer-ownership="none">
- <doc xml:whitespace="preserve">the #GtkTreePath</doc>
- <type name="TreePath" c:type="GtkTreePath*"/>
- </parameter>
- </parameters>
- </virtual-method>
+ <field name="get_iter">
+ <callback name="get_iter">
+ <return-value transfer-ownership="none">
+ <doc xml:whitespace="preserve">%TRUE, if @iter was set</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="tree_model" transfer-ownership="none">
+ <type name="TreeModel" c:type="GtkTreeModel*"/>
+ </parameter>
+ <parameter name="iter"
+ direction="in"
+ caller-allocates="1"
+ transfer-ownership="none">
+ <doc xml:whitespace="preserve">the uninitialized
#GtkTreeIter</doc>
+ <type name="TreeIter" c:type="GtkTreeIter*"/>
+ </parameter>
+ <parameter name="path" transfer-ownership="none">
+ <doc xml:whitespace="preserve">the #GtkTreePath</doc>
+ <type name="TreePath" c:type="GtkTreePath*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
As a sidenote: What I do not understand though is how the handling of
the return value happens. Apparently a tuple is expected with the first
argument being the boolean return value and the second argument seems to
be copied to the iter->stamp field (the first field of the struct).
However, it does not seem possible to set the other struct's fields.
When returning anything else than a tuple, the following error is raised
(which is ok though, because the calling convention requires to return a tuple
there):
ERROR:/build/buildd/pygobject-3.2.2/gi/pygi-closure.c:317:_pygi_closure_set_out_arguments:
code should not be reached
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1024492
Title:
Gtk-3.0.gir: TreeModel.get_iter argument iter should be
direction:inout
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gtk+3.0/+bug/1024492/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs