gpt4 book ai didi

c - 我如何理解以下内容的含义?

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:31 24 4
gpt4 key购买 nike

引自here :

  if (to_end) 
{
/* If we want to scroll to the end, including horizontal scrolling,
* then we just create a mark with right gravity at the end of the
* buffer. It will stay at the end unless explicitely moved with
* gtk_text_buffer_move_mark.
*/
gtk_text_buffer_create_mark (buffer, "end", &iter, FALSE);

/* Add scrolling timeout. */
return g_timeout_add (50, (GSourceFunc) scroll_to_end, textview);
}
else
{
/* If we want to scroll to the bottom, but not scroll horizontally,
* then an end mark won't do the job. Just create a mark so we can
* use it with gtk_text_view_scroll_mark_onscreen, we'll position it
* explicitely when needed. Use left gravity so the mark stays where
* we put it after inserting new text.
*/
gtk_text_buffer_create_mark (buffer, "scroll", &iter, TRUE);

/* Add scrolling timeout. */
return g_timeout_add (100, (GSourceFunc) scroll_to_bottom, textview);
}

评论虽然多了好几行,但还是没看懂其中的逻辑,尤其是标记滚动条的位置是什么关系 em>?

更新

看来我被这条评论误导了:

  /* and place the mark at iter. the mark will stay there after we
* insert some text at the end because it has right gravity.
*/

比如说,scroll 标记具有left 引力,而不是right 引力,对吗?

最佳答案

标记与滚动条的位置没有任何关系

他们在该代码中使用了标记,因为函数 gtk_text_view_scroll_mark_onscreen() 很方便,它是计算标记位置的快捷方式,然后将滚动条移动到该位置。

“end” 标记是一个右重力标记,因此当他们将文本添加到缓冲区的末尾时,该标记停留在末尾。这样,当它们 scroll_mark_onscreen 时,垂直和水平滚动条都会移动,以显示最后一行的结尾。

“滚动” 标记已离开重力。当他们将文本添加到缓冲区的末尾时,他们不关心它去哪里,因为每当他们添加文本时,他们自己将它移动到最后一行的开头。这样,当它们scroll_mark_onscreen 时,只有垂直滚动条移动,以显示最后一行的开头

他们也可以为两个标记设置正确的引力,因为他们不关心 "scroll" 标记的位置。

他们也可以为两个标记保留引力,并在添加文本时手动将 “end” 标记移动到最后一行的末尾,但他们没有,因为它们可以通过赋予 “end” 标记正确的引力来自动获得相同的效果。

关于c - 我如何理解以下内容的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2750729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com