7

我在gschem上工作,这是一个用于编辑电子原理图的免费软件工具。最近我们在使用包含GtkTextView的GtkScrolledWindow时遇到了问题。

语境

最新版本的 Ubuntu 使用覆盖滚动条,这意味着 GtkScrolledWindows 不再设置为传统滚动条提供足够空间的最小高度(实际上,它们的最小高度为 0)。同样,没有要显示的文本的 GtkTextView 请求高度为 0。这意味着 gschem 中的可滚动 GtkTextView 之一已显示为高度为一个像素,这显然是不可用的。

显示损坏的屏幕截图

在上面显示的屏幕截图右侧的对话框中,请注意“值:”标签和“添加”按钮之间的不可见小部件。

这已由多个用户独立报告 - 另请参阅错误报告

问题

显然,我们可以通过这样做来解决这个问题:

g_object_set (textview, "height-request", 100, NULL);

但是,这非常不雅,并且对于以像素为单位设置非常大字体大小的用户(例如,有视力问题或使用高 DPI 屏幕的用户)会破坏。

因此,理想情况下,我们希望设置 GtkTextView 相对于默认字体大小的最小大小,例如告诉它“显示至少三行文本”。

谁能建议一种明智/优雅的方法来做到这一点?

4

4 回答 4

2

只需通过执行以下操作禁用应用程序中的 ubuntu 覆盖滚动条:

putenv("LIBOVERLAY_SCROLLBAR=0");

不理想,但在您找到更永久的解决方案之前,这是一个相当不错的选择。或者,等到 Ubuntu 禁用覆盖滚动条...

于 2011-12-19T21:20:14.863 回答
0

它必须是 textview 吗?如果您可以改用事件框,则可以从中创建一个 cairo 表面,使用 pango 渲染文本,然后使用 pango_layout_get_size() 获取文本高度。

于 2012-02-11T15:23:48.463 回答
0

同样,没有要显示的文本的 GtkTextView 请求高度为 0。

可能您可以创建带有一些文本的 GtkTextView 。喜欢几个空格,创建后设置空值。

于 2013-03-30T10:33:34.947 回答
0

我会添加代码来挖掘当前/默认样式信息,用它来计算字体基线高度,然后根据你提到的大约三行计算一些粗略的大小分配。

于 2011-12-22T10:08:54.567 回答