summaryrefslogtreecommitdiff
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
parent582cf030843bb70bada2ef2493b0b296150be03e (diff)
downloadpygobject-4518d3615b7e13ec4790b383ee8ce725adf327dd.tar.gz
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
-rw-r--r--gobject/gobjectmodule.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 05565e99..861a03ca 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);
}