如何检测GtkScrolledWindow是否滚动到底部?

时间:2019-01-08 11:57:42

标签: c gtk3 gtkscrolledwindow

我想知道是否有一种方法可以知道用户是否将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 :(得分:1)

在执行这些行之前,您似乎可以检查“边缘到达”信号。 GtkScrooledWindow中的信号“边缘到达”,可能是GTK_POS_TOP和GTK_POS_BOTTOM。

看看:https://developer.gnome.org/gtk3/stable/GtkScrolledWindow.html#GtkScrolledWindow-edge-reached

答案 1 :(得分:1)

我想我有自己的问题的答案:

此代码应检测是否到达边缘。

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;