Hi!

As per https://bugzilla.gnome.org/show_bug.cgi?id=657385
gtk_menu_popup_for_device() has been renamed to gtk_menu_popup() in
introspection, causing at least Menu.popup() in python-gi to break.

Ubuntu has reverted it:
https://bugs.launchpad.net/ubuntu/+source/gtk+3.0/+bug/923171

Attached are alternative one-liner patches to either revert the API
break in Gtk+3.0 (dont_rename_annotation.patch, from Ubuntu), or to
adapt python-gobject3 to the API change
(python-gi-adapt-for-gnome657385.patch, written by me).

Since gtk+3.0 is unmaintained, I'm posting here to ask which way to go.


This affects e.g. gcdemu, right-clicking the traybar icon causes this error:
Traceback (most recent call last):
  File "/usr/bin/gcdemu", line 688, in on_popup_menu
    self.menu.popup(None, None, status_icon.position_menu, self, button,
activate_time)
  File "/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py", line
1381, in popup
    self.popup_for_device(None, parent_menu_shell, parent_menu_item,
func, data, button, activate_time)
AttributeError: 'Menu' object has no attribute 'popup_for_device'


-- 
Anssi Hannula
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1444,7 +1444,6 @@ popup_grab_on_window (GdkWindow *window,
  * be used instead.
  *
  * Since: 3.0
- * Rename to: gtk_menu_popup
  */
 void
 gtk_menu_popup_for_device (GtkMenu             *menu,

--- /usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py	2012-02-21 01:49:17.000000000 +0200
+++ Gtk.py	2012-03-06 20:24:00.156775212 +0200
@@ -1378,7 +1378,7 @@
 if Gtk._version != '2.0':
     class Menu(Gtk.Menu):
         def popup(self, parent_menu_shell, parent_menu_item, func, data, button, activate_time):
-            self.popup_for_device(None, parent_menu_shell, parent_menu_item, func, data, button, activate_time)
+            super(Menu, self).popup(None, parent_menu_shell, parent_menu_item, func, data, button, activate_time)
     Menu = override(Menu)
     __all__.append('Menu')
 

Reply via email to