我需要知道在我更改了GtkWidget的内容(安排一个重绘)之后,它什么时候被重绘和验证的。
是不是重绘完成了,还是需要等待更多时间才能重绘。
发布于 2016-11-10 14:43:44
绕过所需内容的方法是延迟滚动,直到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,否则它将被重复调用。
https://stackoverflow.com/questions/40479868
复制相似问题