summaryrefslogtreecommitdiffstats
path: root/gobject/gobjectmodule.c
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2001-06-21 10:07:50 +0000
committerJames Henstridge <jamesh@src.gnome.org>2001-06-21 10:07:50 +0000
commit4518d3615b7e13ec4790b383ee8ce725adf327dd (patch)
tree0fa461194d5f0dcbc72d474cec5fabfe2693f0bb /gobject/gobjectmodule.c
parent582cf030843bb70bada2ef2493b0b296150be03e (diff)
downloadpygobject-4518d3615b7e13ec4790b383ee8ce725adf327dd.tar.gz
pygobject-4518d3615b7e13ec4790b383ee8ce725adf327dd.tar.xz
pygobject-4518d3615b7e13ec4790b383ee8ce725adf327dd.zip
comment out, as container args have been switched to properties now.
2001-06-21 James Henstridge <james@daa.com.au> * gtk/gtkobject-support.c (pygtk_dict_as_container_args): comment out, as container args have been switched to properties now. 2001-06-19 James Henstridge <james@daa.com.au> * gobjectmodule.c (pyg_value_from_pyobject): handle PyGBoxed types. (pyg_value_as_pyobject): pass out PyGBoxed types if no custom handler is found, rather than straight CObjects. Will need to do something about cases where we want mutable values (ie. don't copy the boxed type). * configure.in: require glib/gtk+ 1.3.6
Diffstat (limited to 'gobject/gobjectmodule.c')
-rw-r--r--gobject/gobjectmodule.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 05565e9..861a03c 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -642,13 +642,16 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
return -1;
g_value_set_flags(value, val);
} else if (G_VALUE_HOLDS_BOXED(value)) {
- PyGBoxedMarshal *bm = pyg_boxed_lookup(G_VALUE_TYPE(value));
+ PyGBoxedMarshal *bm;
- if (bm)
+ if (pyg_boxed_check(obj, &PyGBoxed_Type) &&
+ G_VALUE_HOLDS(value, ((PyGBoxed *)obj)->gtype)) {
+ g_value_set_boxed(value, pyg_boxed_get(obj, gpointer));
+ } else if ((bm = pyg_boxed_lookup(G_VALUE_TYPE(value))) != NULL) {
return bm->tovalue(value, obj);
- if (PyCObject_Check(obj))
+ } else if (PyCObject_Check(obj)) {
g_value_set_boxed(value, PyCObject_AsVoidPtr(obj));
- else
+ } else
return -1;
} else if (G_VALUE_HOLDS_POINTER(value)) {
if (PyCObject_Check(obj))
@@ -696,7 +699,8 @@ pyg_value_as_pyobject(const GValue *value)
if (bm)
return bm->fromvalue(value);
else
- return PyCObject_FromVoidPtr(g_value_get_boxed(value), NULL);
+ return pyg_boxed_new(G_VALUE_TYPE(value), g_value_get_boxed(value),
+ TRUE, TRUE);
} else if (G_VALUE_HOLDS_POINTER(value)) {
return PyCObject_FromVoidPtr(g_value_get_pointer(value), NULL);
}