summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Gobry <fredgo@src.gnome.org>2000-02-29 07:46:17 +0000
committerFrederic Gobry <fredgo@src.gnome.org>2000-02-29 07:46:17 +0000
commitb1dff8b7407ae3eb7eee7ca4424881f8689cc758 (patch)
treed78fe6b0a2407ef0fe6d06eeaa536d6e1722a315
parent2b9fb1576ffa3d07cb6fe8385b719cde9267d598 (diff)
downloadpygtk-b1dff8b7407ae3eb7eee7ca4424881f8689cc758.tar.gz
GtkSelectionData fields are now None when the selection is invalid.
-rw-r--r--gtkmodule.c36
1 files changed, 26 insertions, 10 deletions
diff --git a/gtkmodule.c b/gtkmodule.c
index 72452819..28e11197 100644
--- a/gtkmodule.c
+++ b/gtkmodule.c
@@ -2198,16 +2198,32 @@ PyGtkSelectionData_GetAttr(PyGtkSelectionData_Object *self, char *key) {
if (!strcmp(key, "__members__"))
return Py_BuildValue("[sssss]", "data", "format", "selection", "target",
"type");
- else if (!strcmp(key, "selection"))
- return PyGdkAtom_New(self->obj->selection);
- else if (!strcmp(key, "target"))
- return PyGdkAtom_New(self->obj->target);
- else if (!strcmp(key, "type"))
- return PyGdkAtom_New(self->obj->type);
- else if (!strcmp(key, "format"))
- return PyInt_FromLong(self->obj->format);
- else if (!strcmp(key, "data"))
- return PyString_FromStringAndSize(self->obj->data, self->obj->length);
+
+ if (self->obj->length >= 0) {
+ /* there is a defined selection */
+ if (!strcmp(key, "selection"))
+ return PyGdkAtom_New(self->obj->selection);
+ else if (!strcmp(key, "target"))
+ return PyGdkAtom_New(self->obj->target);
+ else if (!strcmp(key, "type"))
+ return PyGdkAtom_New(self->obj->type);
+ else if (!strcmp(key, "format"))
+ return PyInt_FromLong(self->obj->format);
+ else if (!strcmp(key, "data"))
+ return PyString_FromStringAndSize(self->obj->data, self->obj->length);
+ }
+ else {
+ /* no correct selection here */
+ if (! strcmp (key, "selection") ||
+ ! strcmp (key, "target") ||
+ ! strcmp (key, "type") ||
+ ! strcmp (key, "format") ||
+ ! strcmp (key, "data")) {
+ Py_INCREF (Py_None);
+ return Py_None;
+ }
+ }
+
return Py_FindMethod(PyGtkSelectionData_methods, (PyObject *)self, key);
}