GTK 4.11.1

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

列表视图改进

GtkListView、GtkColumnView 和 GtkGridView 小部件系列是 GTK 4 中的重大新增功能之一。它们旨在取代 GtkTreeView,但到目前为止,这显然仍然有点不切实际。

在 GTK 4.10 中,我们终于迈出了将 GtkFileChooser 从树视图移植出去的重要一步——这表明列表视图已经准备好投入使用了。下一个 GTK 4 版本将带来一些缺失的功能

  • 最后,修复了长期存在的滚动错误
  • 更好的键盘导航,具有可自定义的制表符行为
  • 焦点控制
  • 程序化滚动
  • 分节,也许

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

更好的纹理

纹理在 GTK 的 GL 渲染器中经常使用——用于图标和图像、字形以及中间的离屏渲染。大多数时候,我们不必考虑它们,它们只是工作。但是,如果纹理是您应用程序的主要内容,例如在图像查看器中,则您需要对其进行更多控制,并且重要的是,极端情况可以正常工作。

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

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

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

分数缩放

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

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

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

GDK_DEBUG=gl-fractional

在环境中。

总结

GTK 4.11 中有很多新东西值得探索。请尝试它们,并在 gitlabDiscourse 上告诉我们您的想法。