Есть ли способ внести изменения в заголовок с помощью GTK2?

У меня есть настольное приложение, написанное на Ruby, использующее GTK2. Это всего лишь небольшое тестовое приложение для игры с GTK2, но у меня проблемы с выполнением того, что я хочу сделать. Есть ли способ использовать GTK2 для доступа к строке заголовка (помимо установки заголовка), в частности, либо добавить к нему кнопку (рядом с min / max / etc, B на диаграмме ниже), либо добавить параметр в меню который появляется, когда вы щелкаете значок в строке заголовка (A на диаграмме ниже)?

alt text

Я думаю, что этого может и не быть, потому что GTK предназначен для работы со множеством разных оконных менеджеров, но мне просто интересно, были ли они. В качестве побочного вопроса, какое событие вызывает нажатие кнопки «крестик»? В настоящий момент, если пользователь щелкает, окно исчезает, но программа не заканчивается - мне нужно зафиксировать это событие и выйти из программы.

Спасибо за любую помощь, в том числе за то, что ударил меня по голове и сказал, какой я глупый.


person Stephen    schedule 20.09.2010    source источник
comment
В X11 вы даже не знаете, используют ли они вообще WM. Какой сигнал срабатывает X, также полностью зависит от WM - это Metacity, который вы используете?   -  person Ken    schedule 20.09.2010
comment
Скорее всего, да. Это (в основном) программа с одной средой, и эта среда - это Gnome, работающий в Fedora 13. Я могу проверить оконный менеджер по умолчанию завтра, но, вероятно, это мета.   -  person Stephen    schedule 20.09.2010
comment
Обычно эта область принадлежит WM, так что вам придется убедить Metacity рисовать там (и я не знаю, есть ли у нее для этого какие-то крючки). Если бы вы знали, что это работает в полностью контролируемой среде, вы, вероятно, могли бы сделать что-нибудь безумное, чтобы нарисовать там, но кто знает, что может сломаться. :-)   -  person Ken    schedule 20.09.2010
comment
Грм. Спасибо. Я подозревал, что это могло быть так. Это раздражает, так как все, что я хочу сделать, это добавить «о» к моему приложению, а оно слишком маленькое и одинокое, чтобы использовать для него меню - в меню не было бы ничего другого. Но, конечно, я должен иметь возможность зацепиться за кнопку закрытия? Как еще я могу завершить свою программу, если пользователь использует ее вместо кнопки выхода, которую я сделал?   -  person Stephen    schedule 20.09.2010
comment
Диспетчер окон обнаружит, когда нажата кнопка закрытия, может быть (например) глобальное сочетание клавиш, принадлежащее wm, которое делает то же самое, что вам не нужно знать как программисту приложений.   -  person unwind    schedule 21.09.2010


Ответы (2)


Нет, строка заголовка принадлежит оконному менеджеру, и у вас обычно не будет прямого доступа к ней.

Когда пользователь пытается закрыть окно, нажав кнопку диспетчера окон, окно получит сообщение удалить событие.

person unwind    schedule 23.09.2010

Обратите внимание, что это возможно в GTK 3.10 и выше при использовании gtk_window_set_titlebar(). Он заменяет строку заголовка оконного менеджера на настраиваемую. GtkHeaderBar - хороший пользовательский класс строки заголовка для использования.

Однако вы не можете сделать его похожим на оконный менеджер, потому что вы не будете знать, какой оконный менеджер запускает пользователь.

person ptomato    schedule 13.03.2014