在GtkScrolledWindow或GtkEventBox上绘画

时间:2010-04-17 16:05:35

标签: c gtk multithreading

使用GTK,我试图在GtkTextView中包含的GtkScrolledWindow的角落覆盖“更多”提示(但也可以是任何绘图对象)。我在处理程序中为文本视图的expose信号绘制提示。它可以工作,但当我滚动窗口时,我得到了文物:提示随文本视图的内容一起移动而不会被删除。

为了消除伪影,我在每次滚动后触发重绘。这大部分都有效,但是当你快速滚动时,你仍然可以看到提示上下跳跃。有什么方法可以防止这种情况吗?如果提示只是“浮动”在文本视图的顶部,那就太好了。

我尝试将滚动的窗口封闭在GtkEventBox中并在其上绘制提示,但这也不起作用;滚动条和文本视图总是在提示上绘制,即使您将事件框的窗口设置为在其子窗口前面也是如此。

更新

如果我将GtkEventBox的公开回调与g_signal_connect_after()相关联,则会在GtkScrolledWindowGtkTextView的公开回调后调用它。尽管文本视图仍然覆盖了事件框。我认为这是因为滚动是异步发生的。有人知道如何防止我的图画被覆盖吗?

另一个更新

所以我猜我真正需要的是在异步滚动完成时连接的信号。如果我能找到它的时间,那么我可以在GtkEventBox上触发另一个公开事件。如何在滚动完成后收到通知?

1 个答案:

答案 0 :(得分:1)

使用弹出窗口显示提示。这应该避免滚动工件的所有问题。