gtk_source_mark_attributes_render_icon的第二个参数

时间:2018-12-24 00:21:43

标签: c gtk gtksourceview

函数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?

2 个答案:

答案 0 :(得分:1)

我同意,有关这一点的文档尚不清楚。我认为该小部件可能应该是与缓冲区相对应的GtkSourceView。

大小可能受先前对gtk_source_view_mark_attributes_set_icon_name()的调用或您用来告诉它渲染哪个pixbuf的任何内容的影响。

答案 1 :(得分:0)

有两个因素影响了pixbuf的渲染方式。 第一个是装订线的大小(始终为宽度),第二个是线的高度。

根据gtksourcepixbufhelper.c,对于两个尺寸,像素缓冲区都以一个单位缩放。从函数gutter_renderer_pixbuf_drawhere中可以看出,这个单位本质上是cell_area->width。这取决于装订线的大小。

但是,装订线标记本身并未被编码为可扩展的高度,也无法将其扩展为高度,因此在绘制装订线时会对其进行裁剪。


因此,为了让pixbuf跨得更远,必须增加行的高度。 GtkTextView的font-size属性可能会发生这种情况。 但是通常也不需要较大的字体,因此要破解这种行为,我想到的是一件事。

可使用辅助覆盖文本视图显示文本(不应有装订线),而底部文本视图则显示较大的像素缓冲区。覆盖文本视图可能需要使用左边距和装订线的大小。为了使pixbuf与行同步,必须使用pixels-above-linespixels-below-lines(标记或textview道具)来填充行。对于两个道具或类似的东西,底部文本视图的行高减去覆盖文本视图的高度/ 2。


较不刺眼的解决方案是在装订线(也许是单元格渲染器)上进行子类化,并重写渲染功能以实现自己的规则。