diff options
author | John Finlay <finlay@src.gnome.org> | 2006-06-13 08:13:31 +0000 |
---|---|---|
committer | John Finlay <finlay@src.gnome.org> | 2006-06-13 08:13:31 +0000 |
commit | 2283f4cf3387b554b9bc8623735fa19e54e33f07 (patch) | |
tree | 7d3eb9f5f8a7b41faa343fbc6795a0e6c6a18b89 /gtk/gtkobject-support.c | |
parent | afc5c664ae45dead4cdaa6ce79b454e1c9e3cd35 (diff) | |
download | pygtk-2283f4cf3387b554b9bc8623735fa19e54e33f07.tar.gz |
Add. pygdk_atom_vector_from_sequence
* gtk/pygtk-private.h: Add. pygdk_atom_vector_from_sequence
* gtk/gtkobject-support.c (pygdk_atom_vector_from_sequence): Add.
* gtk/gtk.override (_wrap_gtk_targets_include_rich_text)
(_wrap_gtk_targets_include_uri, _wrap_gtk_targets_include_text)
(_wrap_gtk_targets_include_image): Add.
Diffstat (limited to 'gtk/gtkobject-support.c')
-rw-r--r-- | gtk/gtkobject-support.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gtk/gtkobject-support.c b/gtk/gtkobject-support.c index 9ae3869f..d5e181fc 100644 --- a/gtk/gtkobject-support.c +++ b/gtk/gtkobject-support.c @@ -42,3 +42,30 @@ pygtk_custom_destroy_notify(gpointer user_data) g_free(cunote); } +GdkAtom* +pygdk_atom_vector_from_sequence(PyObject *py_targets, gint *n_targets) +{ + gint i; + GdkAtom *targets; + + if (!(py_targets = PySequence_Fast(py_targets, + "targets must be a sequence"))) + return NULL; + + *n_targets = PySequence_Fast_GET_SIZE(py_targets); + targets = g_new(GdkAtom, *n_targets); + for (i = 0; i < *n_targets; i++) { + PyObject *trgt = PySequence_Fast_GET_ITEM(py_targets, i); + targets[i] = pygdk_atom_from_pyobject(trgt); + if (PyErr_Occurred()) { + PyErr_Clear(); + PyErr_SetString(PyExc_TypeError, + "each 'targets' item must be a GdkAtom or string"); + g_free(targets); + Py_DECREF(py_targets); + return NULL; + } + } + Py_DECREF(py_targets); + return targets; +} |