经过四年的发展 波芬 宣布发布新的GTK 4.0分支,它是作为新开发过程的一部分开发的,该过程试图为应用程序开发人员提供稳定且兼容的API数年,并且可以使用它,而不必担心由于下一个GTK中的API更改而每六个月重做一次应用程序分支。
GTK 4分支 已声明稳定,将在下一版GNOME 4.0中使用。 同时,宣布将停止对GTK 2分支的支持,并计划在几天内发布最新版本,而在可预见的将来,对GTK 3分支的支持将继续。
GTK 4.0的主要新功能
从这个新分支中脱颖而出的变化中,我们可以发现 实施了受限的设计方法,其中子元素的位置和大小是根据与边缘的距离和其他元素的大小确定的。
除此之外 添加了基于Vulkan图形API的渲染模块, 它为GTK小部件中使用的许多资源密集型CSS元素实现了着色器,并且 GSK已整合 (GTK场景套件) 通过OpenGL和Vulkan具有场景图形渲染功能.
代表处的组织已修改: 而不是将其发送到缓冲区, 现在使用基于渲染节点的模型, 其中输出以高级操作树的形式进行组织, 使用OpenGL和Vulkan由GPU有效处理。
我们还可以在GTK 4.0中看到这一点 提出了一种现代化的事件传递模型,这使得在路由输入事件时可以绕过子窗口。 实施新模型的需要与更积极地使用动画效果相关联,动画效果必须在不更改可见元素的布局的情况下进行呈现,因此,也没有子窗口。
重新设计了GDK API以利用Wayland协议 及相关概念。 X11和Wayland相关的功能已移至单独的后端,并且已进行了大型API清理,包括删除了GtkMenu,GtkMenuBar和GtkToolbar类,而不是建议使用GMenu和popover选项。
在进行小部件开发时,将根据控制区域的实现显示一个新的GtkLayoutManager对象,该对象用于根据可见区域的大小排列元素,并且GtkLayoutManager已替换了GTK容器(例如GtkBox和GtkGrid)中的子属性。
在其他突出的变化中:
- 已为具有自己的显示表面并可以在第一级上单独工作的小部件添加了新的GtkNative类,而无需链接到主小部件。
- 添加了新的小部件,包括GtkPicture,GtkText,GtkPasswordEntry,GtkListView,GtkGridView,GtkColumnView,以及显示表情符号的小部件。
- 添加了新的抽象层GdkPaintable,该对象可以呈现可以在任何位置,任何大小绘制的对象,而无需对设计层进行排序。
- 重写了百老汇后端,以允许在Web浏览器窗口中呈现GTK库输出。
- 与拖放操作相关的API已重新设计,包括建议的单独GdkDrag和GdkDrop对象。
- 已删除了针对残疾人的Accessibility API的先前实现,并已提出了基于ARIA规范和GtkAccessible小部件的新版本。
- 增加了对可编辑标签的支持
- GtkTreeView小部件实现了编辑单元格的功能。
- 向GtkFilterListModel和GtkSortListModel添加了对增量滚动和过滤的支持。
- 为macOS添加了新的GDK后端。
GtkTextView和其他输入窗口小部件具有内置的撤消堆栈。 - 对于Windows,提供了一个新的基于ANGLE的GDK渲染后端,该中间层用于将调用从OpenGL ES转换为OpenGL,Direct3D 9/11,Desktop GL和Vulkan。