Автоматическое изменение размера GtkTextView в GtkScrolledWindow

Я работаю над gschem, свободным программным инструментом для редактирования электрических схем. Недавно мы столкнулись с проблемой использования GtkScrolledWindow, содержащего GtkTextView.

Контекст

Последние версии Ubuntu используют оверлейные полосы прокрутки, что означает, что GtkScrolledWindows больше не устанавливают минимальную высоту, которая обеспечивает достаточно места для унаследованной полосы прокрутки (фактически, они имеют минимальную высоту 0). Аналогично, GtkTextView без текста для отображения запрашивает высоту 0. Это означает, что один из прокручиваемых GtkTextView в gschem отображается как один пиксель в высоту, что, очевидно, непригодно для использования.

Screenshot showing broken

В диалоговом окне справа на скриншоте, показанном выше, обратите внимание на невидимый виджет между меткой "Значение:" и кнопкой "Добавить".

Об этом независимо сообщили несколько пользователей - см. также сообщение об ошибке.

Вопрос

Очевидно, мы могли бы исправить это, сделав:

g_object_set (textview, "height-request", 100, NULL);

Однако это довольно неэлегантно, и будет ломаться для пользователей, которые устанавливают очень большие размеры шрифта в пикселях (например, пользователи с проблемами зрения или использующие экраны с высоким DPI).

В идеале, поэтому мы хотим установить минимальный размер GtkTextView относительно размера шрифта по умолчанию, например, сказать ему "показывать по крайней мере три строки текста".

Может ли кто-нибудь предложить разумный/элегантный подход для этого?

7
задан Peter T.B. Brett 12 December 2011 в 23:38
поделиться