函数gtk_source_mark_attributes_render_icon()
的第二个参数应该是什么
显然是GtkWidget*
类型,根据the reference page,这是
“可以使用哪种样式设置的小部件”
我发现它有点不清楚。
当我打电话给gtk_source_mark_attributes_render_icon(att, some_random_widget, 40);
时,似乎什么都没发生,装在排水沟中的pixbuf
小至10x10之类的东西。我什至将装订线的大小设置为40,因为我最初认为图像很小,因为装订线的宽度很小。
如何在排水沟中渲染更大的pixbuf?
答案 0 :(得分:1)
我同意,有关这一点的文档尚不清楚。我认为该小部件可能应该是与缓冲区相对应的GtkSourceView。
大小可能受先前对gtk_source_view_mark_attributes_set_icon_name()
的调用或您用来告诉它渲染哪个pixbuf的任何内容的影响。
答案 1 :(得分:0)
有两个因素影响了pixbuf的渲染方式。 第一个是装订线的大小(始终为宽度),第二个是线的高度。
根据gtksourcepixbufhelper.c,对于两个尺寸,像素缓冲区都以一个单位缩放。从函数gutter_renderer_pixbuf_draw
到here中可以看出,这个单位本质上是cell_area->width
。这取决于装订线的大小。
但是,装订线标记本身并未被编码为可扩展的高度,也无法将其扩展为高度,因此在绘制装订线时会对其进行裁剪。
因此,为了让pixbuf跨得更远,必须增加行的高度。 GtkTextView的font-size
属性可能会发生这种情况。
但是通常也不需要较大的字体,因此要破解这种行为,我想到的是一件事。
可使用辅助覆盖文本视图显示文本(不应有装订线),而底部文本视图则显示较大的像素缓冲区。覆盖文本视图可能需要使用左边距和装订线的大小。为了使pixbuf与行同步,必须使用pixels-above-lines
和pixels-below-lines
(标记或textview道具)来填充行。对于两个道具或类似的东西,底部文本视图的行高减去覆盖文本视图的高度/ 2。
较不刺眼的解决方案是在装订线(也许是单元格渲染器)上进行子类化,并重写渲染功能以实现自己的规则。