diff options
author | Gian Mario Tagliaretti <gianmt@src.gnome.org> | 2007-07-29 21:17:54 +0000 |
---|---|---|
committer | Gian Mario Tagliaretti <gianmt@src.gnome.org> | 2007-07-29 21:17:54 +0000 |
commit | 37e5cec4a8208b7bfdf963716db52c2cf2092bac (patch) | |
tree | 6e1a93c8e3dede65bb93cc4cb084175a4b0a3e13 /gtk/pygtktreemodel.c | |
parent | 64ea0c9868c3a8561515e2bc36c2f9911ec86e0c (diff) | |
download | pygtk-37e5cec4a8208b7bfdf963716db52c2cf2092bac.tar.gz |
add wrapping/unwrapping of GtkTreeItermethods to gtk.GenericTreeModel, fix #388754. by Paul Pogonyshev
svn path=/trunk/; revision=2868
Diffstat (limited to 'gtk/pygtktreemodel.c')
-rw-r--r-- | gtk/pygtktreemodel.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/gtk/pygtktreemodel.c b/gtk/pygtktreemodel.c index a3f85805..f908c37b 100644 --- a/gtk/pygtktreemodel.c +++ b/gtk/pygtktreemodel.c @@ -24,7 +24,6 @@ #endif #include "pygtktreemodel.h" -#include <Python.h> #include "pygtk-private.h" /* define this to print out debug messages */ @@ -801,3 +800,42 @@ pygtk_generic_tree_model_iter_is_valid(PyGtkGenericTreeModel *tree_model, return VALID_ITER(iter, tree_model); } + +PyObject * +pygtk_generic_tree_model_get_user_data(PyGtkGenericTreeModel *tree_model, + GtkTreeIter *iter) +{ + g_return_val_if_fail(tree_model != NULL, NULL); + + if (VALID_ITER(iter, tree_model)) { + /* Py_INCREF and NULL checking is done at _wrap_*() level. */ + return iter->user_data; + } + else { + g_warning("iter is not valid for the tree model"); + return NULL; + } +} + +GtkTreeIter +pygtk_generic_tree_model_create_tree_iter(PyGtkGenericTreeModel *tree_model, + PyObject *user_data) +{ + GtkTreeIter iter; + + if (tree_model != NULL) { + iter.user_data = user_data; + iter.stamp = PYGTK_GENERIC_TREE_MODEL(tree_model)->stamp; + + /* Otherwise, caller is supposed to hold a reference somewhere. */ + if (PYGTK_GENERIC_TREE_MODEL(tree_model)->leak_references) + Py_INCREF(user_data); + } + else { + /* FIXME: I guess this is still not enough. */ + iter.user_data = NULL; + iter.stamp = 0; + } + + return iter; +} |