如何检测 GtkScrolledWindow 是否滚动到底部?
How to detect if GtkScrolledWindow is scrolled to bottom?
我想知道是否有办法知道用户是否将 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);
但如果用户自己滚动,我不想运行这段代码。
看起来您可以在执行这些行之前检查 "the edge-reached" 信号。 "edge-reached" GtkScrolledWindow 中的一个信号,可以是 GTK_POS_TOP 和 GTK_POS_BOTTOM.
看看:https://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html#GtkScrolledWindow-edge-reached
我想我已经找到了我自己的问题的答案:
此代码应检测是否到达边缘。
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;
我想知道是否有办法知道用户是否将 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);
但如果用户自己滚动,我不想运行这段代码。
看起来您可以在执行这些行之前检查 "the edge-reached" 信号。 "edge-reached" GtkScrolledWindow 中的一个信号,可以是 GTK_POS_TOP 和 GTK_POS_BOTTOM.
看看:https://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html#GtkScrolledWindow-edge-reached
我想我已经找到了我自己的问题的答案:
此代码应检测是否到达边缘。
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;