我正在创建一个文本编辑器,作为更加熟悉 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,说实话我不太明白:
来自开发帮助:
出于此功能的目的,有效屏幕会减少一个尺寸为 inside_margin 的边距。
这意味着什么?
我还接近吗?如何创建此滚动到行号功能?
Thanks.
UPDATE:以下三个函数用于滚动到缓冲区中的一行:
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 函数让我接近行号,但它距离文本区域底部只有几行。
inside_margin 参数控制滚动到的文本应出现的屏幕区域,或更准确地说,它设置不应出现文本的屏幕边框的空间量。
存在这一点是为了当您将 use_align 设置为 false(即您不希望文本出现在屏幕上的特定位置)时,您仍然可以确保文本不会直接出现在屏幕的顶部或底部屏幕(这可能不利于可读性)。
如果您根本不关心文本出现的位置,您可以使用g_text_view_scroll_mark_on_screen
它只接受文本视图和一个标记,没有进一步的参数。这将始终滚动最小量以使文本出现在屏幕上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)