Обнаружение использования глобального меню ubuntu

Я переношу коммерческое приложение в Linux, оно запускается на нескольких дистрибутивах. При запуске на Ubuntu GtkMenuBar удаляется из окна приложения и помещается в основную глобальную панель меню. Все в порядке ... но в окне приложения есть соответствующее пустое место, где было удалено меню (оно помещено в GtkFixed). Мне нужно выяснить, когда это произошло (и ТОЛЬКО), когда это произошло из любого дистрибутива, чтобы я мог надежно удалить пустое пространство.

Как лучше всего это обнаружить? (т.е. через gtk_widget _... calls) Что было сделано для GtkMenuBar для достижения этого? Спасибо.

1
задан 27 February 2013 в 21:36

1 ответ

Проблема не в том, что в GtkMenuBar ничего не было сделано (оно просто скрыто). Проблема заключается в том, что вы используете GtkFixed для ее размещения, и поэтому все не изменяется автоматически при отключении MenuBar.

Есть ли какая-то конкретная причина, по которой вы используете GtkFixed для размещения вещей, а не используя стандартную структуру размещения коробки GTK +? Возможно, вы захотите изучить GtkApplication и / или GtkBuilder для создания и представления своего пользовательского интерфейса вместо использования абсолютного позиционирования с помощью GtkFixed.

Если вы хотите продолжить использование GtkFixed, вам нужно будет наблюдать за свойством (или сигналом) на GtkMenuBar и изменять и / или изменять размер других виджетов в вашем окне вручную, когда GtkMenuBar скрыт.

1
ответ дан 25 May 2018 в 01:00
  • 1
    Когда это уйдет? Является ли сам GtkMenuBar исправленным, чтобы я мог обнаружить это раньше или что-то пришло позже и скрыть? Есть ли способ спросить GtkMenuBar, если он останется скрытым? GtkFixed используется, потому что # 1) это портативное приложение, которое работает и на Win и Mac, так что автоматизация - это значительное препятствие, №2). Вместо этого существует сложный язык макета на основе XML. – dajoke 27 February 2013 в 23:14
  • 2
    Я не уверен на 100%, но я думаю, что это модуль GTK +, который выполняет эту работу. Когда функция включена, и когда пользователь работает под Unity, структура меню будет разобрана, а панель в окне будет скрыта. Я думаю, что сигнал hide излучается, когда это происходит. В документации GTK + перечислены все сигналы для виджетов. Должно быть достаточно простым, чтобы проверить с помощью простого скрипта Python, если необходимо, чтобы узнать точный метод использования. – dobey 28 February 2013 в 01:21
  • 3
    Я не вижу никакого скрытого сигнала, а также настройки или распределения по размеру. Строка меню по-прежнему отображается как видимая, реализована и сопоставлена, хотя она выделена на 0,0 с размером 0,0. Я не уверен, как это достигается. – dajoke 9 March 2013 в 23:41
  • 4
    PS - если кто-нибудь может направить меня к коду, который вызывает это, это будет большой помощью. – dajoke 10 March 2013 в 00:13

Другие вопросы по тегам:

Похожие вопросы: