在我的程序开发过程中,我遇到了一个我无法解决的绘图故障。我正在使用 GtkRevealer 在另一个框上方显示和隐藏一个 GtkInfoBar,该框包含一个带有 GtkTextView(实际上是 GtkSourceView)的滚动窗口,就像在 gedit 中一样。 整个东西都打包在 GtkPaned 中。
当我通过显示隐藏信息栏时, TextView 中会出现一个黑色区域,当必须重绘小部件时它会消失(例如,当我单击 TextView 以放置光标时) 此外,如果我放大窗口的默认分辨率(出于兼容性原因为 640x480),则不会出现此故障。 我知道这可能很难重现,但我不知道谁遇到过同样的问题。他可能知道解决此问题的方法。 也欢迎任何想法。 我将准确地画出故障在 gedit 上的样子(尽管它不会在 gedit 中发生,或者它确实发生但我无法达到正确的分辨率)。
我试图用 gtk_widget_queue_draw()
强制重绘,但什么也没有发生,也不会发生,因为它没有要重绘的东西。
我现在将尝试自动放置光标。它可能有效,但在功能上还不够。
编辑:
令人惊讶的是它没有用。捕获焦点并放置光标
对故障视觉行为没有影响。我什至不得不换一条线
这次修复它。
我必须使用大于特定点的值调整窗口大小的事实可能意味着故障可能是由于对齐错误计算引起的,但这并不能解释为什么在装订线中添加新行或文本标记使整行也删除了黑色字段。
最佳答案
目前此错误已在其他具有 TextView 的程序中遇到,但尚未报告为错误。 或许这与它难以重现有关。
我发现用 gtk_widget_hide()
隐藏 gtk TextView 然后用 gtk_widget_show()
显示它是有效的。这种视觉故障的闪烁并不明显,可能是由于 GTK+ 基于事件并等待函数返回以处理更改。
关于c - GtkRevealer 使 TextView 绘图出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169513/