1

函数的第二个参数应该是什么gtk_source_mark_attributes_render_icon() 它显然是类型GtkWidget*,根据参考页面,这是

“可以使用哪些样式设置的小部件”

我觉得有点不清楚。

当我打电话时,gtk_source_mark_attributes_render_icon(att, some_random_widget, 40);似乎什么都没有发生,并且在排水沟中渲染的 pixbuf 小到 10x10 或其他东西。我什至将装订线尺寸设置为 40,因为我最初认为,图像是如此之小,因为装订线的宽度是如此之小。

如何在排水沟中渲染更大的 pixbuf?

4

2 回答 2

1

我同意,文档在这一点上很不清楚。我觉得widget大概应该是buffer对应的GtkSourceView。

大小可能会受到前面的调用gtk_source_view_mark_attributes_set_icon_name()或您用来告诉它要呈现哪个 pixbuf 的任何内容的影响。

于 2018-12-24T15:35:08.247 回答
0

有两件事对如何渲染 pixbuf 起作用。首先是排水沟的大小(始终是宽度),其次是线条的高度。

根据gtksourcepixbufhelper.c,pixbuf 在两个维度上都以一个单位缩放。从函数中可以看出gutter_renderer_pixbuf_draw这里这个单元本质上是cell_area->width。这是由排水沟的大小决定的。

但是排水沟线标记本身没有被编码为高度可扩展,它们也不能在高度上扩展线,所以当排水沟被渲染时,它们被剪裁了。


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

辅助覆盖文本视图可用于显示文本(不应有装订线),而底部文本视图显示更大的 pixbuf。覆盖文本视图可能需要与装订线大小相同的左填充。并且要将 pixbufs 与行同步,必须使用pixels-above-linesand pixels-below-lines(标签或 textview 道具)来填充行。底部文本视图的行高减去覆盖文本视图的高度 / 2 两个道具或类似的东西。


不那么骇人听闻的解决方案是在排水沟(可能还有单元格渲染器)上进行子类化并覆盖渲染函数以实现您自己的规则。

于 2018-12-27T04:13:23.177 回答