Как определить, прокручивается ли GtkScrolledWindow вниз? - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы знать, есть ли способ узнать, прокрутил ли пользователь GtkScrolledWindow (содержащий GtkTextView) вниз или нет.

Действительно, я автоматически прокручивал до конца:

gtk_text_buffer_get_end_iter(tbuf, &iter);
GtkTextMark *insert_mark = gtk_text_buffer_get_insert(tbuf);
gtk_text_buffer_place_cursor(tbuf, &iter);
gtk_text_view_scroll_to_mark(text, insert_mark, 0.0, TRUE, 0.0, 1.0);

Но я не хочу запускать этот код, если пользователь прокручивал сам.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я думаю, что у меня есть ответ на свой вопрос:

Этот код должен определять, достигнут ли край.

value = gtk_adjustment_get_value(adjustment);
lower = gtk_adjustment_get_lower(adjustment);
upper = gtk_adjustment_get_upper(adjustment);
page_size = gtk_adjustment_get_page_size(adjustment);

if (value == upper - page_size)
    edge_reached = TRUE;
0 голосов
/ 08 января 2019

Похоже, что вы могли бы проверить сигнал "достигнут край" перед исключением этих строк. "достигнут край" сигнал в GtkScrooledWindow, который может быть GTK_POS_TOP и GTK_POS_BOTTOM.

взгляните на: https://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html#GtkScrolledWindow-edge-reached

...