diff options
author | Johan Dahlin <johan@src.gnome.org> | 2006-04-02 15:04:40 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2006-04-02 15:04:40 +0000 |
commit | ba6ee31ba582970a62f5c921f0b466b0606f89fd (patch) | |
tree | 6bd189ef18bcd7b5d25cc2bbf08a6f9367115b17 /gtk/gtk-types.c | |
parent | 83a2bda4e520a9038c51a33104b5a29f631e5711 (diff) | |
download | pygtk-ba6ee31ba582970a62f5c921f0b466b0606f89fd.tar.gz |
GDK_PARENT_RELATIVE constant
* gtk/gtkmodule.c (init_gtk): GDK_PARENT_RELATIVE constant
* gtk/gtk-types.c (pygtk_style_helper_setitem): Add support for
GDK_PARENT_RELATIVE in style pixmaps.
Fixes #320248 (Nikos Kouremenos)
Diffstat (limited to 'gtk/gtk-types.c')
-rw-r--r-- | gtk/gtk-types.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/gtk/gtk-types.c b/gtk/gtk-types.c index 559e3fbd..a4bbad6b 100644 --- a/gtk/gtk-types.c +++ b/gtk/gtk-types.c @@ -108,6 +108,8 @@ pygtk_style_helper_getitem(PyGtkStyleHelper_Object *self, int pos) case STYLE_PIXMAP_ARRAY: { GdkPixmap **array = (GdkPixmap **)self->array; + if ((long)array[pos] == GDK_PARENT_RELATIVE) + return PyLong_FromLong(GDK_PARENT_RELATIVE); return pygobject_new((GObject *)array[pos]); } } @@ -156,19 +158,29 @@ pygtk_style_helper_setitem(PyGtkStyleHelper_Object *self, int pos, case STYLE_PIXMAP_ARRAY: { GdkPixmap **array = (GdkPixmap **)self->array; + GdkPixmap *cvalue = NULL; - if (!pygobject_check(value, &PyGdkPixmap_Type) && value!=Py_None) { + if (pygobject_check(value, &PyGdkPixmap_Type)) + cvalue = GDK_PIXMAP(g_object_ref(pygobject_get(value))); + else if (PyLong_Check(value)) { + if (PyLong_AsLong(value) != GDK_PARENT_RELATIVE) { + PyErr_SetString(PyExc_TypeError, + "can only assign a GdkPixmap, None or " + "GDK_PARENT_RELATIVE"); + return -1; + } + cvalue = (GdkPixmap*)GDK_PARENT_RELATIVE; + } else if (value != Py_None) { PyErr_SetString(PyExc_TypeError, - "can only assign a GdkPixmap or None"); + "can only assign a GdkPixmap, None or " + "GDK_PARENT_RELATIVE"); return -1; } - if (array[pos]) { + + if (array[pos] && (long)array[pos] != GDK_PARENT_RELATIVE) { g_object_unref(array[pos]); } - if (value != Py_None) - array[pos] = GDK_PIXMAP(g_object_ref(pygobject_get(value))); - else - array[pos] = NULL; + array[pos] = cvalue; return 0; } } |