GTK 3.99.1

距离我们发布 GTK 3.99 已经过去一个月了,是时候发布另一个快照了。它来了:https://download.gnome.org/sources/gtk/3.99/gtk-3.99.1.tar.xz

此快照的重点是润色和完善。

未尽事宜

我们整理了 API 中的一些未尽事宜。

最明显的用户可见的更改可能是简化了按钮类层次结构。GtkCheckButton 不再从 GtkToggleButton 派生,它们现在是两个独立的部件,并且它们都可以分组以实现互斥(也称为“单选组”)。在这种新的设置中,实际上不再需要 GtkRadioButton,因此它被移除了。

我们新的列表部件(GtkListView 和 GtkGridView)的 API 也进行了一些小的调整。我们现在明确要求模型类型为 GtkSelectionModel,以明确部件处理选择。并且我们去掉了额外的 “with_factory” 构造函数,而是在 new() 中只接受一个可为空的工厂参数,因此我们得到:

GtkWidget * gtk_list_view_new (GtkSelectionModel  *model,
                               GtkListItemFactory *factory);

作为更进一步的 API 清理,我们删除了所有 CSS 样式类的定义 - 我们的部件支持哪些样式类在其文档中定义,而这些额外的定义实际上并没有很好地定义或有用。

我们的主题现在正在使 GtkFrame 部件绘制的框架的角变为圆形。这需要我们使框架裁剪它们的子项——这不是一个真正的 API 更改,而是一个值得一提的行为更改。

更多演示

过去一个月,我们在 gtk4-demo 上投入了大量精力。

我们使源代码高亮显示现代化了。我们现在正在使用 highlight 命令行实用程序。除此之外,这允许我们对 xml 和 css 进行语法高亮显示,并支持暗色主题。

Highlighting XML in a dark theme
高亮显示

演示列表具有更好的筛选和更好的外观。新外观是 Adwaita 现在支持的几种预定义的列表样式之一:富列表、导航侧边栏和数据表。

 

Rich List list style
富列表
Navigation Sidebar list style
导航侧边栏
Data Table list style
数据表

我们从 gtk4-demo 中删除了一些过时的演示,并润色了许多现有的演示。这是我们现在的拖放演示的样子

Drag-and-Drop demo
拖放演示

还添加了许多新的演示。这是新的布局管理器和转换演示

性能和其他错误

许多错误已被修复;感谢我们热心的测试人员和错误报告者。

我们最近终于追踪到的一个长期存在的问题导致我们的 GL 渲染器在存在非平凡的投影变换时裁剪错误。现在已对其进行了更正(结果可以在上面的转换演示中看到)。

作为之前提到的高亮显示改进的一部分,gtk_text_view_buffer_insert_markup() 的速度快得多。此改进的实现仅仅是因为 highlight 实用程序可以生成 Pango 标记。 感谢实现它的人!

我们解决的另一个性能问题是具有许多字体的系统上字体选择器对话框的加载时间。我们现在正在逐步填充字体列表。除了此更改之外,调查还导致了 fontconfig 和 Pango 中的性能改进,这将使这些库的任何用户受益。

我可以开始移植了吗?

答案是:可以!

现在是查看 GTK4,开始移植你的应用程序,并向我们提供关于我们新旧 API 的反馈的好时机。我们也渴望看到你有哪些使用 GTK4 的意想不到的方式的想法——我们上面展示的一些演示可能会给你一些启发。

下一步是什么?

我们正在寻求尽快为我们新的可访问性接口引入 at-spi 后端;它应该包含在下一个 GTK 快照中。