Второй аргумент gtk_source_mark_attributes_render_icon - PullRequest
0 голосов
/ 24 декабря 2018

Каким должен быть второй аргумент функции gtk_source_mark_attributes_render_icon() Он явно имеет тип GtkWidget* и согласно справочная страница это виджет

"которогоможно использовать настройки стиля "

Я нахожу это немного неясным.

Когда я звоню gtk_source_mark_attributes_render_icon(att, some_random_widget, 40); Кажется, ничего не происходит, и изображение в буфере, отображаемое в желобе, так мало, как10х10 или что-то.Я даже установил размер желоба равным 40, потому что изначально думал, что изображение очень маленькое, потому что ширина желоба очень мала.

Как можно рендерить большие пиксельные буферы в желобе?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Есть две вещи, которые играют роль в том, как визуализируется pixbuf.Первый - это размер желоба (который всегда имеет ширину), а второй - это высота линии.

Согласно gtksourcepixbufhelper.c pixbuf масштабируется с одной единицей для обоих измерений.,Как видно из функции gutter_renderer_pixbuf_draw, здесь эта единица по существу равна cell_area->width.Это определяется размером желоба.

Но сами отметки линии желоба не кодируются так, чтобы их можно было расширять по высоте, и они не могут расширять линию по высоте, поэтому при визуализации желоба они обрезаются.


Поэтому, чтобы пиксбуфы могли расширяться, необходимо увеличить высоту строки.Это может произойти со свойством font-size GtkTextView.Но более крупный шрифт, как правило, тоже нежелателен, поэтому, чтобы взломать это поведение, мне в голову пришла одна вещь.

Для отображения текста может использоваться вторичное наложение текста (не должно быть желоба), в то время как нижняя частьтекстовое представление отображает большие pixbufs.Вид наложенного текста может нуждаться в заполнении слева размером желоба.И чтобы синхронизировать pixbuf со строками, нужно будет использовать pixels-above-lines и pixels-below-lines (метки или текстовые реквизиты) для заполнения линий.Высота строки нижнего текстового представления минус высота оверлейного текстового представления / 2 для обоих реквизитов или что-то в этом роде.


Менее хакерское решение - это создать подкласс на желобе (и, возможно,средство визуализации ячеек) и переопределите функцию рендеринга для реализации ваших собственных правил.

0 голосов
/ 24 декабря 2018

Согласен, документация на этот счет довольно непонятна.Я думаю, что виджет, вероятно, должен быть GtkSourceView, соответствующим буферу.

Размер, вероятно, зависит от предыдущего вызова gtk_source_view_mark_attributes_set_icon_name() или от того, что вы используете, чтобы сообщить ему, какой pixbuf визуализировать.

...