В частности замечен deskbar-applet (в Сизиф не уходит из-за неработоспособности), не проверен, так как на данный момент не собиарюсь его собирать - orca. Привожу то что он вывидит. 03-25 00:21 deskbar.core.ModuleLoader INFO Initializing Действия с компьютером Traceback (most recent call last): File "/usr/lib/python2.5/site-packages/deskbar/ui/DeskbarTray.py", line 53, in on_button_press self.set_active(not self.active, event.time) File "/usr/lib/python2.5/site-packages/deskbar/ui/DeskbarTray.py", line 64, in set_active self.__show_toggle(self, time) File "/usr/lib/python2.5/site-packages/deskbar/ui/DeskbarTray.py", line 125, in __show_toggle self.__controller.on_keybinding_activated(widget, time, False) File "/usr/lib/python2.5/site-packages/deskbar/ui/CuemiacWindowController.py", line 34, in on_keybinding_activated self._view.receive_focus(time) File "/usr/lib/python2.5/site-packages/deskbar/ui/CuemiacWindowView.py", line 187, in receive_focus self.window.set_user_time(time) AttributeError: 'gtk.gdk.Window' object has no attribute 'set_user_time' У себя отключил следующие напильники # create our version of gdkconfig.h # disable direct X11 using in python module # don't like x11 symbols due directfb и ситуация исправилась. Steps to Reproduce: 1. Устанавливаем deskbar-applet (если скажете куда, выложу). 2. Добавляем его на панель gnome 3. Клик по апплету и получаем ошибку.
Прошу прощения, необходимо баг перевесить на основной пакет - python-module-pygtk, сюда попал похоже из-за моей невнимательности.
А каким образом функция set_user_time связана с X11? Да, и если deskbar-applet'а рабочего в Сизифе сейчас нет, то не будет хуже его туда положить.
(In reply to comment #2) > А каким образом функция set_user_time связана с X11? > Да, и если deskbar-applet'а рабочего в Сизифе сейчас нет, то не будет хуже его > туда положить. Я конечно в питоне плохо разбираюсь, но помоему вот таким образом: смотрим pygtk-%ver/gtk/gdk-base.defs ---грызь--- (define-method set_user_time (of-object "GdkWindow") (c-name "gdk_x11_window_set_user_time") (return-type "none") (parameters '("guint32" "timestamp") ) ) дальше смотрим pygtk-%ver/gtk/gdk.override #if defined(GDK_WINDOWING_X11) #include <gdk/gdkx.h> #elif defined(GDK_WINDOWING_WIN32) #include <gdk/gdkwin32.h> #endif и собственно в gdk/gdkx.h определена void gdk_x11_window_set_user_time (GdkWindow *window, guint32 timestamp); на которую ссылается питоновский алиас set_user_time
Здесь вообще всё интересно... Когда я попытался использовать функцию gdk_window_set_user_time в программе на C, то получил ошибку при линковке: cc gtk-dnd.o /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libpangocairo-1.0.so /usr/lib/libcairo.so /usr/lib/libpangoft2-1.0.so /usr/lib/libfontconfig.so /usr/lib/libfreetype.so /usr/lib/libz.so /usr/lib/libpango-1.0.so /usr/lib/libm.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libdl.so /usr/lib/libglib-2.0.so -o gtk-dnd gtk-dnd.o: In function `main': gtk-dnd.c:(.text+0x4f9): undefined reference to `gdk_window_set_user_time' collect2: выполнение ld завершилось с кодом возврата 1 make: *** [gtk-dnd] Ошибка 1 Таким образом получается, что, несмотря на то, что в заголовках gdk эта функция определена, в библиотеке её нет. Так что pygtk тут, похоже, не причём; надо разбираться, почему в нашей gdk эта функция отсутствует.
(In reply to comment #4) Хм, а если не сложно код в студию, как завершу перевод системы на 64бита, посмотрю.
#include <gtk/gtk.h> int main (int argc, char **argv) { GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window) gtk_window_set_user_time(window->window, 12345); /* На всякий случай, вообще-то до этого места не доходит */ gtk_main(); }
> gtk_window_set_user_time(window->window, 12345); А может будет вернее gdk_x11_window_set_user_time(window->window, 12345);
Да, с C-шной функцией я ошибся... так что с gdk подозрения сняты. А с остальным, по-моему, всё ясно: если нам нужен метод set_user_time, то в спеке нужно убрать строчки: # create our version of gdkconfig.h cp %_libdir/gtk-2.0/include/gdkconfig.h ./ %__subst "s|GDK_WINDOWING_X11|GDK_WINDOWING_DIRECTFB|g" gdkconfig.h # disable direct X11 using in python module %__subst "s|-DGDK_TARGET_X11||g" ./configure и # don't like x11 symbols due directfb objdump -t %buildroot%python_sitelibdir/gtk-2.0/gtk/_gtk.so | grep -i x11 && exit 1 как собственно уже и говорилось. Вносимые в этих строках изменения как раз и зарубают объявление метода set_user_time.
не моё
А зачем нужна эта функция в данном случае? Я про неё читаю gdk_x11_window_set_user_time () Note that this property is automatically updated by GDK, so this function should only be used by applications which handle input events bypassing GDK. Я готов добавить вместо неё пустышку.
Нет такого. Python2 EOL.
Вру, есть.
(Ответ для Grigory Ustinov на комментарий #13) > Вру, есть. Я разобрался со всеми его пользователями, но нас подвёл GIMP — в текущей версии он всё ещё на python2, а новая только в процессе выпуска. И все мы знаем, как редко там появляются новые пользователи.