diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | gtk/gtkwidget.override | 29 | ||||
-rw-r--r-- | tests/Makefile.am | 5 | ||||
-rw-r--r-- | tests/test_accel_closures.py | 20 |
4 files changed, 57 insertions, 6 deletions
@@ -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, >K_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() |