Метки имеют никакого отношения к положению полосы прокрутки.
Они используют метки в этом коде, потому что это удобно для функции gtk_text_view_scroll_mark_onscreen()
, которая является ярлыком для вычисленияположение метки, а затем перемещение полос прокрутки в эту позицию.
Метка "end"
является меткой правой гравитации, поэтому, когда они добавляют текст в конец буфера, метка остается наконец.Таким образом, когда они scroll_mark_onscreen
, вертикальные и горизонтальные полосы прокрутки перемещаются, показывая конец последней строки.
Метка "scroll"
покинула гравитацию.Их не волнует, куда они идут, когда они добавляют текст в конец буфера, потому что они сами перемещают его всякий раз, когда добавляют текст, в начало последней строки.Таким образом, когда они scroll_mark_onscreen
, перемещаются только вертикальные полосы прокрутки, чтобы отобразить начало последней строки.
Они могли бы иметь правильную гравитацию для обеих меток,потому что их не волнует, куда идет знак "scroll"
.
Они также могли бы оставить гравитацию для обеих меток и вручную перемещать метку "end"
в конец последней строки всякий раз, когда добавляли текст, но они этого не делали, потому что могли получитьтот же эффект автоматически, давая "end"
знак правильной гравитации.