summaryrefslogtreecommitdiffstats
path: root/gobject/gobjectmodule.c
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2001-06-23 10:15:45 +0000
committerJames Henstridge <jamesh@src.gnome.org>2001-06-23 10:15:45 +0000
commit5963920662bde148852d89a56713f168a4c47a35 (patch)
tree9809f0be7d5f601ebec156213146bf0d8e77e654 /gobject/gobjectmodule.c
parent9b322a660e816c67109ac6246afd774b799b3a9d (diff)
downloadpygobject-5963920662bde148852d89a56713f168a4c47a35.tar.gz
pygobject-5963920662bde148852d89a56713f168a4c47a35.tar.xz
pygobject-5963920662bde148852d89a56713f168a4c47a35.zip
more fixups to use pyg_type_from_object.
2001-06-23 James Henstridge <james@daa.com.au> * gobjectmodule.c (pyg_signal_new): more fixups to use pyg_type_from_object. * gtk/gtk.override (_wrap_gtk_accel_group_new): don't use PyGtkAccelGroup_New (not sure why I am fixing this -- will change soon anyway). (_wrap_gtk_tree_store_set_value): use pyg_type_from_object here. (_wrap_gtk_list_store_set_value): same here. * codegen/argtypes.py (CustomBoxedArg): rename from BoxedArg. (BoxedArg): new code for standardised PyGBoxed handling. (ArgMatcher.register_custom_boxed): rename from register_boxed (ArgMatcher.register_boxed): new function for PyGBoxed types. (arg): use ArgMatcher.register_boxed to register GtkAccelGroup. * pygobject.h (pyg_boxed_check): change macro to check against the typecode, rather than python wrapper type.
Diffstat (limited to 'gobject/gobjectmodule.c')
-rw-r--r--gobject/gobjectmodule.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 9e71563..d8ab589 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -1897,7 +1897,7 @@ pyg_signal_new(PyObject *self, PyObject *args)
PyObject *py_type;
GSignalFlags signal_flags;
GType return_type;
- PyObject *py_param_types;
+ PyObject *py_return_type, *py_param_types;
GType instance_type = 0;
guint n_params, i;
@@ -1906,12 +1906,15 @@ pyg_signal_new(PyObject *self, PyObject *args)
guint signal_id;
if (!PyArg_ParseTuple(args, "sOiiO:gobject.signal_new", &signal_name,
- &py_type, &signal_flags, &return_type,
+ &py_type, &signal_flags, &py_return_type,
&py_param_types))
return NULL;
instance_type = pyg_type_from_object(py_type);
if (!instance_type)
return NULL;
+ return_type = pyg_type_from_object(py_return_type);
+ if (!return_type)
+ return NULL;
if (!PySequence_Check(py_param_types)) {
PyErr_SetString(PyExc_TypeError,
"argument 5 must be a sequence of GType codes");
@@ -1922,8 +1925,8 @@ pyg_signal_new(PyObject *self, PyObject *args)
for (i = 0; i < n_params; i++) {
PyObject *item = PySequence_GetItem(py_param_types, i);
- param_types[i] = (GType) PyInt_AsLong(item);
- if (PyErr_Occurred()) {
+ param_types[i] = pyg_type_from_object(item);
+ if (param_types[i] == 0) {
PyErr_Clear();
Py_DECREF(item);
PyErr_SetString(PyExc_TypeError,
@@ -1974,6 +1977,7 @@ static struct _PyGObject_Functions functions = {
pyg_register_interface,
+ &PyGBoxed_Type,
pyg_register_boxed,
pyg_boxed_new,
};