我正在创建一个文本编辑器作为更熟悉 C 和 gtk+ 的一种方式。我正在使用 gtk+-2.0 & gtksourceview-2.0 和 gtk_scrolled_window 。作为创建 goto 函数浏览器的第一次尝试,我想我只需创建在文档中找到的函数数组以及它们出现的相应行数组。我做了那么多。我惊讶地发现在 devhelp 中没有可以轻松找到的 goto line 功能。听起来 gtk_text_view_scroll_to_mark () 是我想要的(在创建标记之后),但是所有 *scroll_to 函数都需要一个 inside_margin,老实说我不太明白。:
来自开发帮助:
用于此功能的有效屏幕减少了一个大小为 within_margin 的边距。
这意味着什么?
我什至接近吗?如何创建此滚动到行号功能?
谢谢。
更新:以下三个函数用于滚动到缓冲区中的一行:
gtk_text_iter_set_line (&start, lineNums[9]);
gtk_text_buffer_add_mark (tbuffer, scroll2mark, &start);
gtk_text_view_scroll_to_mark (text_view, scroll2mark, 0.0, TRUE, 0.0, 0.17);
gtk_text_view_scroll_to_mark 的最后一个参数用于获取目标行号以与缓冲区中的最顶部行对齐。我想这个参数不适用于所有屏幕尺寸,但我还没有测试过。
gtk_text_view_scroll_mark_onscreen 函数让我接近了行号,但它只是文本区域底部的几行。