diff options
author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2005-10-02 16:42:13 +0000 |
---|---|---|
committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2005-10-02 16:42:13 +0000 |
commit | c277e618c7f35416e4c36e3161fd412b7414f73f (patch) | |
tree | 676354328025f2d30d78b87e08b5f0ded02b567e | |
parent | 92df600efcf19616e013714315787802e93af2e4 (diff) | |
download | pygtk-c277e618c7f35416e4c36e3161fd412b7414f73f.tar.gz |
guint64 property fix
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | gobject/pygtype.c | 18 | ||||
-rw-r--r-- | tests/test_properties.py | 5 |
3 files changed, 25 insertions, 11 deletions
@@ -1,3 +1,16 @@ +2005-10-02 Gustavo J. A. M. Carneiro <gjc@gnome.org> + + * tests/test_properties.py (PropertyObject.__gproperties__) + (PropertyObject.do_get_property, PropertyObject.do_set_property) + (TestProperties.testUint64): Add guint64 property test case, by + Johan Dahlin. + + * gobject/pygtype.c (pyg_value_from_pyobject): Accept conversion + from PyInt (not just PyLong) to guint64. + (_wrap_g_type_wrapper__get_children): Fix sign/unsigned warning. + (_wrap_g_type_wrapper__get_interfaces): idem. + (pyg_value_from_pyobject): idem. + 2005-10-01 Gustavo J. A. M. Carneiro <gjc@gnome.org> * tests/test_subtype.py (TestSubType.testGObjectNewError): Add new diff --git a/gobject/pygtype.c b/gobject/pygtype.c index 9b4dcda6..ebb9dd8c 100644 --- a/gobject/pygtype.c +++ b/gobject/pygtype.c @@ -95,7 +95,7 @@ _wrap_g_type_wrapper__get_fundamental(PyGTypeWrapper *self, void *closure) static PyObject * _wrap_g_type_wrapper__get_children(PyGTypeWrapper *self, void *closure) { - int n_children, i; + guint n_children, i; GType *children; PyObject *retval; @@ -112,7 +112,7 @@ _wrap_g_type_wrapper__get_children(PyGTypeWrapper *self, void *closure) static PyObject * _wrap_g_type_wrapper__get_interfaces(PyGTypeWrapper *self, void *closure) { - int n_interfaces, i; + guint n_interfaces, i; GType *interfaces; PyObject *retval; @@ -774,12 +774,12 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj) } break; case G_TYPE_UINT64: - g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj)); - if (PyErr_Occurred()) { - g_value_unset(value); - PyErr_Clear(); - return -1; - } + if (PyInt_Check(obj)) + g_value_set_uint64(value, PyInt_AsLong(obj)); + else if (PyLong_Check(obj)) + g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj)); + else + return -1; break; case G_TYPE_ENUM: { @@ -793,7 +793,7 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj) break; case G_TYPE_FLAGS: { - guint val = 0; + gint val = 0; if (pyg_flags_get_value(G_VALUE_TYPE(value), obj, &val) < 0) { PyErr_Clear(); return -1; diff --git a/tests/test_properties.py b/tests/test_properties.py index 0df6481c..de290bee 100644 --- a/tests/test_properties.py +++ b/tests/test_properties.py @@ -44,7 +44,7 @@ class PropertyObject(GObject): elif pspec.name == 'construct-only': self._construct_only = value elif pspec.name == 'uint64': - self._uint64 + self._uint64 = value else: raise AssertionError @@ -102,10 +102,11 @@ class TestProperties(unittest.TestCase): self.assertRaises(TypeError, obj.set_property, 'construct-only', '456') - def _testUint64(self): + def testUint64(self): obj = new(PropertyObject) self.assertEqual(obj.props.uint64, 0) obj.props.uint64 = 1L self.assertEqual(obj.props.uint64, 1L) obj.props.uint64 = 1 self.assertEqual(obj.props.uint64, 1L) + |