我需要知道在更改GtkWidget的内容(安排重绘)后重绘和验证的时间。
无论如何要重新绘制是否重绘或需要等待更多重绘。
答案 0 :(得分:1)
绕过你需要的方法是延迟滚动直到GTK知道滚动区域有多大。可能最简单的方法是使用g_idle_add()。当没有其他任务需要完成时,添加到其中的回叫将按优先级顺序执行。 GTK确实以高优先级使用空闲函数来进行重绘,但默认优先级应该没问题。
gboolena my_delayed_function(gpointer user_data)
{
// The function that does the scroll goes here.
return FALSE;
}
void my_function_that_shows_something()
{
// Do some drawing.
// ...
// Schedule a scroll.
g_idle_add(my_delayed_function, NULL);
}
作为注释,您必须从该回调返回FALSE,否则将重复调用。