summaryrefslogtreecommitdiff
path: root/gtk/gtk-types.c
diff options
context:
space:
mode:
authorJohan Dahlin <johan@src.gnome.org>2006-04-02 15:04:40 +0000
committerJohan Dahlin <johan@src.gnome.org>2006-04-02 15:04:40 +0000
commitba6ee31ba582970a62f5c921f0b466b0606f89fd (patch)
tree6bd189ef18bcd7b5d25cc2bbf08a6f9367115b17 /gtk/gtk-types.c
parent83a2bda4e520a9038c51a33104b5a29f631e5711 (diff)
downloadpygtk-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.c26
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;
}
}