Проблемы с GtkSocket (было: gtk_widget_set_size_request (): Неправильно работает в некоторых ситуациях)

Модератор: Модераторы разделов

nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Проблемы с GtkSocket (было: gtk_widget_set_size_request (): Неправильно работает в некоторых ситуациях)

Сообщение nick87720z »

Продолжая низводить баги в своем докере для окон...
Вот порядок инициализации:

Перед стартом создается окно с сокет-виджетом, изначально нулевого размера.
После старта (пока использую таймаут с нулевым интервалом, и срабатывающий только один раз):
1. Добавляется внешнее окно с помощью gtk_socket_add_id ()
2. Размер сокет-виджета устанавливается равным размеру захваченного окна. Сам размер всегда правильный.
3. Последующий сигнал об изменении размера окна (не виджета) используется для обновления некоторых не относящихся к делу данных (таких, как положение панели в скрытом состоянии). И вот тут с помощью gdb выясняется следующее:
- Под одним пользователем (ну, под которым я все изначально делал) никаких проблем; WM - fluxbox;
- Под остальными пробовал как KDE, так и fluxbox...
* Если создать новое окно, то при первом запуске окно изчезает (ну так и долно быть), однако размер виджета, полученный из сигнала о ресайзе, оказывается не тем - вместо 122x80 (точно не помню, в общем это dclock) всего 5x5.
* В половине случаев размер угадывается правильно, но захваченное окно все-равно не отображается в сокет-виджете.
* Так как закрытие докера пока не приводит к уничтожению окна (вообще-то хочется реализовать это как обратное превращение - в плавающее, но как вернуть окну видимость не представляю), то можно еще и еще раз запускать докер без изменений в параметрах. Последующие запуски проходят без проблем, как у меня самого - размер угадывается, окно вставляется в заданную рамку.


P.S. gtk 2.20.1, как обычно
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Проблемы с GtkSocket (было: gtk_widget_set_size_request (): Неправильно работает в некоторых ситуациях)

Сообщение nick87720z »

Внезапно всплыла страшная вещь: Gtk-WARNING **: /build/buildd/gtk+2.0-2.20.1/gtk/gtksocket.c:815: Can't add non-GtkPlug to GtkSocket
Под fluxbox такого, как мы уже поняли, нет.
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Проблемы с GtkSocket (было: gtk_widget_set_size_request (): Неправильно работает в некоторых ситуациях)

Сообщение nick87720z »

Все нормально, то сообщение появлялось при повторной попытке встроить dclock, т.к. при первой попытке dclock падал с ошибкой:
X Error of failed request: BadValue (integer parameter out of range for operation)
Спасибо сказали: