summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--gtk/gtkwidget.override29
-rw-r--r--tests/Makefile.am5
-rw-r--r--tests/test_accel_closures.py20
4 files changed, 57 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 1e1c6a26..50f5b832 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-09-01 Gian Mario Tagliaretti <gianmt@gnome.org>
+
+ Bug 309554 – gtk.Widget.list_accel_closures not wrapped
+
+ * gtk/gtkwidget.override:
+ * tests/Makefile.am:
+ * tests/test_accel_closures.py: Wrap gtk_widget_list_accel_closures
+ patch from Gustavo Carneiro.
+
2008-08-31 Gian Mario Tagliaretti <gianmt@gnome.org>
* gtk/pygtktreemodel.c: Remove compiler warnings.
diff --git a/gtk/gtkwidget.override b/gtk/gtkwidget.override
index 7fb080ae..1dd969f6 100644
--- a/gtk/gtkwidget.override
+++ b/gtk/gtkwidget.override
@@ -256,9 +256,9 @@ _wrap_gtk_widget_class_install_style_property (PyObject *self,
g_type_class_unref(class);
return NULL;
}
-
+
gtk_widget_class_install_style_property(class, pspec);
-
+
g_type_class_unref(class);
Py_INCREF(Py_None);
@@ -332,7 +332,7 @@ _wrap_gtk_widget__set_window(PyGObject *self, PyGObject *value, void *closure)
PyErr_SetString(PyExc_TypeError, "must be a GdkWindow object");
return -1;
}
-
+
GTK_WIDGET(self->obj)->window = g_object_ref(GDK_WINDOW(value->obj));
return 0;
@@ -348,7 +348,7 @@ _wrap_gtk_widget__set_allocation(PyGObject *self, PyObject *value, void *closure
}
pygdk_rectangle_from_pyobject(value, &GTK_WIDGET(self->obj)->allocation);
-
+
return 0;
}
%%
@@ -573,3 +573,24 @@ out:
g_type_class_unref(klass);
return signame;
}
+
+%%
+override gtk_widget_list_accel_closures noargs
+static PyObject *
+_wrap_gtk_widget_list_accel_closures(PyGObject *self)
+{
+ int i;
+ GList *ret, *tmp;
+ PyObject *pyret;
+
+ ret = gtk_widget_list_accel_closures(GTK_WIDGET(self->obj));
+
+ pyret = PyList_New(g_list_length(ret));
+ for (tmp = ret, i = 0; tmp; tmp = tmp->next, i++) {
+ PyObject *item = pyg_boxed_new(G_TYPE_CLOSURE, tmp->data, TRUE, TRUE);
+ PyList_SET_ITEM(pyret, i, item);
+ }
+
+ g_list_free(ret);
+ return pyret;
+}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3ca928b9..7590da4d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -20,7 +20,8 @@ tests = \
test_rectangle.py \
test_style.py \
test_textview.py \
- test_treeview.py
+ test_treeview.py \
+ test_accel_closures.py
GTK_PY_FILES = __init__.py _lazyutils.py compat.py deprecation.py keysyms.py
@@ -36,4 +37,4 @@ check-local: $(top_srcdir)/gtk/__init__.py
rm -f $(top_builddir)/gtk/$${gtk_py}*; \
done \
fi
- @rm -fr *.pyc
+ @rm -fr *.pyc
diff --git a/tests/test_accel_closures.py b/tests/test_accel_closures.py
new file mode 100644
index 00000000..3cda6465
--- /dev/null
+++ b/tests/test_accel_closures.py
@@ -0,0 +1,20 @@
+import unittest
+
+from common import gtk, gobject
+
+class AccelClosures(unittest.TestCase):
+
+ def testListAccelClosures(self):
+ group = gtk.AccelGroup()
+ window = gtk.Window()
+ window.add_accel_group(group)
+ button = gtk.Button()
+ window.add(button)
+ button.add_accelerator("clicked", group, gtk.keysyms.x, gtk.gdk.CONTROL_MASK, 0)
+ for closure in button.list_accel_closures():
+ group1 = gtk.accel_group_from_accel_closure(closure)
+ self.assert_(group1 is group)
+ window.destroy()
+
+if __name__ == '__main__':
+ unittest.main()