如何理解下面的意思吗?(How do I understand what the following

2019-09-25 20:01发布

引自这里 :

  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); 
  } 

虽然有评论颇有几行,我还是不明白其中的逻辑,特别是,什么是标志滚动条的位置之间的关系?

UPDATE

看来,我这个评论误导:

  /* 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标记已经离开地心引力, 不对重力,是这样吗?

Answer 1:

标记有毫无关系到滚动条的位置。

他们使用的标记在该代码,因为它的方便功能gtk_text_view_scroll_mark_onscreen()这是用于计算标记的位置,然后再移动滚动条到该位置的快捷方式。

"end"标志是一种权利重力标志,所以当他们文本添加到缓冲区的末尾,标记停留在末端。 这样一来,当他们scroll_mark_onscreen ,垂直和水平滚动条移动,以显示最后一行的末尾。

"scroll"商标已经离开了重力。 他们不关心的地方去,当他们文本添加到缓冲区的末尾,因为他们将它自己时,他们添加文本,最后一行的开头 。 这样一来,当他们scroll_mark_onscreen ,只有垂直滚动条移动,以显示最后一行的开头

他们也可以同样有两个标志权重,因为他们不关心那里"scroll"标志去。

他们也可以同样有左重力两个标志,并手动移动的"end"标志时,他们添加的文本的最后一行的末尾,但他们没有,因为他们可以通过给予自动获得同样的效果在"end"标记权重。



Answer 2:

在GTK文档检查后,它会出现mark是某种形式的滚动区域命名的位置,而滚动条的位置是在缓冲你实际上滚动到。 如果你比较熟悉HTML,它似乎是一个mark稍微相当于在网页上,你可以通过编程方式滚动到锚。



Answer 3:

在滚动功能,函数gtk_text_view_scroll_mark_onscreen()被用于定位滚动条。 这似乎是同步文本位置和滚动条的位置,最简单的方式。

他们使用两个函数能够模拟“显示文本的结束”(即东西它可能包括一个水平偏移量)和“显示文本的最后一行”(其中水平偏移保持不变)。



文章来源: How do I understand what the following means?
标签: c gtk scrollbar