aboutsummaryrefslogtreecommitdiff
path: root/libraries/sexy-python/fix-sexy_tooltip_position_to_rect.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/sexy-python/fix-sexy_tooltip_position_to_rect.patch')
-rw-r--r--libraries/sexy-python/fix-sexy_tooltip_position_to_rect.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/libraries/sexy-python/fix-sexy_tooltip_position_to_rect.patch b/libraries/sexy-python/fix-sexy_tooltip_position_to_rect.patch
new file mode 100644
index 000000000000..93b45e93d10c
--- /dev/null
+++ b/libraries/sexy-python/fix-sexy_tooltip_position_to_rect.patch
@@ -0,0 +1,50 @@
+diff -Nur sexy-python-0.1.9/sexy/sexy.override sexy-python-0.1.9.new/sexy/sexy.override
+--- sexy-python-0.1.9/sexy/sexy.override 2006-03-18 22:48:12.000000000 +0100
++++ sexy-python-0.1.9.new/sexy/sexy.override 2007-03-08 11:11:46.000000000 +0100
+@@ -163,5 +163,46 @@
+ return 0;
+ }
+ %%
++override sexy_tooltip_position_to_rect kwargs
++
++/* Stock pygdk_rectangle_from_pyobject crashes with (at least) PyGTK 2.6.8 */
++static gboolean
++_gimmie_pygdk_rectangle_from_pyobject(PyObject *object, GdkRectangle *rectangle)
++{
++ g_return_val_if_fail(rectangle != NULL, FALSE);
++
++ if (pyg_boxed_check(object, GDK_TYPE_RECTANGLE)) {
++ *rectangle = *pyg_boxed_get(object, GdkRectangle);
++ return TRUE;
++ }
++ if (PyArg_ParseTuple(object, "iiii", &rectangle->x, &rectangle->y,
++ &rectangle->width, &rectangle->height)) {
++ return TRUE;
++ }
++ PyErr_Clear();
++ PyErr_SetString(PyExc_TypeError, "could not convert to GdkRectangle");
++ return FALSE;
++}
++
++static PyObject *
++_wrap_sexy_tooltip_position_to_rect(PyGObject *self, PyObject *args, PyObject *kwargs)
++{
++ static char *kwlist[] = { "rect", "screen", NULL };
++ PyObject *py_rect;
++ PyGObject *screen;
++ GdkRectangle rect = { 0, 0, 0, 0 };
++
++ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO!:SexyTooltip.position_to_rect", kwlist, &py_rect, &PyGdkScreen_Type, &screen))
++ return NULL;
++
++ /* FIXME: Force the use of a newer version which does not crash */
++ if (!_gimmie_pygdk_rectangle_from_pyobject(py_rect, &rect))
++ return NULL;
++
++ sexy_tooltip_position_to_rect(SEXY_TOOLTIP(self->obj), &rect, GDK_SCREEN(screen->obj));
++ Py_INCREF(Py_None);
++ return Py_None;
++}
++%%
+ init
+ pyg_set_object_has_new_constructor(SEXY_TYPE_URL_LABEL);