diff options
author | Frederic Gobry <fredgo@src.gnome.org> | 2000-02-29 07:46:17 +0000 |
---|---|---|
committer | Frederic Gobry <fredgo@src.gnome.org> | 2000-02-29 07:46:17 +0000 |
commit | b1dff8b7407ae3eb7eee7ca4424881f8689cc758 (patch) | |
tree | d78fe6b0a2407ef0fe6d06eeaa536d6e1722a315 | |
parent | 2b9fb1576ffa3d07cb6fe8385b719cde9267d598 (diff) | |
download | pygtk-b1dff8b7407ae3eb7eee7ca4424881f8689cc758.tar.gz |
GtkSelectionData fields are now None when the selection is invalid.
-rw-r--r-- | gtkmodule.c | 36 |
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); } |