GTK 4.11.1

这是新开发周期的第一个 GTK 快照。最近很多事情都已就绪,所以值得花一些时间来了解一下新功能以及您在 4.12 中可以期待看到的内容。

列表视图的改进

GtkListView、GtkColumnView 和 GtkGridView 小部件系列是 GTK 4 中的重要新增功能之一。它们旨在取代 GtkTreeView,但到目前为止,这显然还只是一个愿景。

在 GTK 4.10 中,我们终于迈出了将 GtkFileChooser 从树视图移植出来的重大一步——这表明列表视图已准备好迎接黄金时期。下一个 GTK 4 版本将带来一些缺失的功能

  • 最终,修复了长期存在的滚动错误
  • 更好的键盘导航,具有可自定义的 Tab 行为
  • 焦点控制
  • 程序化滚动
  • 可能的分区

其中一些已经在 4.11.1 中可用。我们甚至设法将滚动修复反向移植到了 4.10.1。

更好的纹理

纹理在 GTK 的 GL 渲染器中经常使用——用于图标和图像、字形以及中间的屏幕外渲染。大多数时候,我们不必考虑它们,它们只是正常工作。但是,如果纹理是你的应用程序的主要内容,例如在图像查看器中,你需要对它进行更多控制,并且角落用例能够正确工作非常重要。

在 GTK 4.10 中,我们引入了一个 GskTextureScale 节点,它允许应用程序控制在放大或缩小纹理时应用的过滤。这允许应用程序请求使用 GSK_SCALING_FILTER_TRILINEAR 的 mipmap。当有利时,GTK 4.12 将自动使用 mipmap。

我们最近探索的一个角落用例是纹理切片。当纹理大于 GL 堆栈支持的大小时,GSK 会将其分解为更小的切片,并为每个切片使用单独的 GL 纹理。现代 GPU 支持巨大的纹理(在我的系统中,最大纹理尺寸为 16384),这意味着切片支持在实践中很少被测试,并且我们的单元测试也没有很好地覆盖它。

我们添加了对人为限制纹理大小的支持(使用 GSK_MAX_TEXTURE_SIZE 环境变量),并立即发现我们的纹理切片支持需要一些改进。它在 4.12 中会运行得更好。

分数缩放

它在 4 月 1 日发布,但不是一个玩笑。

我们已将对实验性的 wp_fractional_scale_manager_v1 协议的支持添加到 Wayland 后端,并使用 wp_viewporter 协议来告诉合成器有关缓冲区正在使用的缩放比例。很高兴看到这很容易适应我们的渲染堆栈,但不要期望奇迹。它在 cairo 渲染器中运行良好(如您在视频中看到的),但我们仍然认为它在 GL 和 Vulkan 渲染器中是实验性的。

要尝试使用 GL 渲染器的分数缩放,请设置

GDK_DEBUG=gl-fractional

在环境中。

总结

GTK 4.11 中有很多新事物值得探索。请尝试一下,并通过 gitlabDiscourse 告诉我们您的想法。