GTK 4.2 将于 3 月发布——它不会是一个庞大的版本,只是增量改进。但除了通常的错误修复和性能改进之外,还有一些值得单独提及的地方。
新的 GL 渲染器
Christian Hergert 一直在努力工作,为 GTK 创建一个新的 GL 渲染器。这项工作的最初动机是希望提高我们在 MacOS 上的渲染性能,因为那里的 GL 驱动程序不像 Linux 上那样宽容。除此之外,从一个新的渲染器开始,我们可以有机会应用我们在当前 GL 渲染器工作时学到的所有知识,并重新组织代码,以便将来进行改进,例如重新排序和批处理绘制命令。
新的渲染器尚未合并,但它正在接近功能对等,并且很可能会进入 4.2 版本。我们可能会同时包含旧的和新的渲染器,至少一段时间。
弹出框阴影
自从引入 GtkPopover 及其标志性的“尖喙”以来,弹出框一直会裁剪其边界之外的所有内容,因为我们需要尖喙的尖端始终处于一致的位置。随着 GTK4 中新的基于 xdg-popup 的实现,我们有了一个足够表达的定位协议,可以以一种使“尖喙”指向其应该指向的位置的方式放置弹出框,同时允许在弹出框下方和周围显示阴影。与窗口阴影一样,弹出框阴影位于输入区域之外,因此单击会穿透到下面的窗口。
这是一个小小的改进,但它可能会在给予 UI 深度和结构方面产生显著影响。
更好的输入
GtkIMContextSimple 是内置于 GTK 中的输入法实现。当没有可用的平台方法(例如 Wayland 文本协议)时,将使用它。GtkIMContextSimple 只做几件事。其中之一是用 Control-Shift-u 解释 Unicode 字符的十六进制输入。另一个是它处理组合序列,例如
<Compose Key> <a> <acute>
输入 á 字符。
大多数组合序列都以该 组合键 开头,GNOME 40 中的键盘设置将包括一种方法来为键盘上的某个键分配此功能。
在 GTK 方面,我们已经解决了组合序列支持的一些长期抱怨。除了其内置序列外,GTK 还会解析 X11 组合文件。这些文件的格式在 Compose(5) 中描述,但直到现在,GTK 对此格式的支持还相当不完整。在 GTK 4.2 中,我们正在改进这一点,以便
- 允许最多 20 个键的序列(以前,限制为 7 个)
- 生成多个字符(值得注意的是,这允许 Unicode Emoji 序列)
- 支持十六进制码位
对于通过编辑 ~/.Compose 创建自己的组合序列的人来说,这些是不错的改进。但是我们其他人呢?使用组合序列的一个传统难题是,您必须牢记这些序列,并盲打它们。在序列完成并且最终字符出现之前,没有任何视觉反馈。不久前,IBus 通过将不完整序列的字符显示为带下划线的预编辑文本,改进了这一点,类似于我们对十六进制 Unicode 输入所做的那样。
在复制他们的方法用于 GTK 之后,最初的用户反馈褒贬不一,主要是因为组合键的官方字形 (⎄) 在意外出现时有点分散注意力。所以我回到了绘图板,并提出了不同的方法
我希望这个方法更好。欢迎反馈!
所有这些输入更改也将出现在 GTK 3.24.26 中。