10个月后
主
- 在 API
葛兰素史克 (GTK 场景套件),它通过 OpenGL 和 Vulkan 提供图形场景的渲染,已经完成了错误处理工作,由于新的调试工具 gtk4-node-editor,这些错误变得更容易识别,该工具允许您加载和显示序列化格式的渲染节点(可以在检查模式GTK检查器中保存),并且还可以比较使用不同后端时的渲染结果; - 3D 变换功能已达到允许您创建旋转立方体等动画效果的水平;
- 充分
重写 Broadway GDK 后端设计用于在 Web 浏览器窗口中呈现 GTK 库输出。 旧的 Broadway 实现不适合 GTK 4 中提出的渲染方法(它现在使用基于渲染节点的模型,而不是输出到缓冲区,其中输出以高级操作树的形式组成, GPU 使用 OpenGL 和 Vulkan 进行有效处理)。
新的 Broadway 选项将渲染节点转换为具有 CSS 样式的 DOM 节点,以便在浏览器中渲染界面。 每个新的屏幕状态都被处理为 DOM 树相对于先前状态的更改,这减少了传输到远程客户端的数据大小。 3D变换和图形效果是通过CSS的transform属性实现的; - GDK 继续实现以 Wayland 协议设计的 API,并清理基于 X11 的 API 或将它们移至单独的 X11 后端。 不再使用子曲面和全局坐标的工作取得了进展。 GDK 中删除了对 GDK_SURFACE_SUBSURFACE 的支持;
- 继续重构与执行拖放操作相关的代码,包括建议单独的 GdkDrag 和 GdkDrop 对象;
- 事件处理已被简化,现在仅用于输入。 其余事件被替换为单独的信号,例如,建议使用信号“GdkSurface::render”代替输出事件,而不是配置事件 - “GdkSurface::size-changed”,而不是映射事件 - “GdkSurface: :mapped”,而不是 gdk_event_handler_set() - “GdkSurface::event”;
- Wayland 的 GDK 后端添加了对用于访问 GtkSettings 设置的门户界面的支持。 为了与输入法配合使用,已提议支持 text-input-unstable-v3 协议扩展;
- 为了开发小部件,引入了一个新的 GtkLayoutManager 对象,并实现了一个系统,用于根据可见区域的布局控制元素的布局。 GtkLayoutManager 替换 GTK 容器(例如 GtkBox 和 GtkGrid)中的子属性。 提出了几种现成的布局管理器:GtkBinLayout 用于具有一个子元素的简单容器,GtkBoxLayout 用于线性对齐子元素,GtkGridLayout 用于将子元素与网格对齐,GtkFixedLayout 用于任意定位子元素,GtkCustomLayout 用于基于 size_allocate 转换传统元素处理程序;
- 用于子元素页面显示的公共可访问对象已添加到 GtkAssistant、GtkStack 和 GtkNotebook 小部件中,这些小部件的非布局相关子属性将传输到这些小部件。 由于所有现有的子属性都已转换为常规属性、布局属性或移至页面对象,因此已从 GtkContainer 中完全删除了对子属性的支持;
- 核心 GtkEntry 功能已移至新的 GtkText 小部件,其中还包括增强的 GtkEditable 编辑界面。 所有现有的数据输入子类都已基于新的 GtkText 小部件重新制作为 GtkEditable 实现;
- 为密码输入表单添加了新的 GtkPasswordEntry 小部件;
- GtkWidgets 添加了使用通过 CSS 或 GskTransform 的 gtk_widget_allocate 参数指定的线性变换方法来变换子元素的功能。 指定的功能已经应用在 GtkFixed 小部件中;
- 添加了新的列表生成模型:GtkMapListModel、GtkSliceListModel、GtkSortListModel、GtkSelectionModel 和 GtkSingleSelection。 未来我们计划在 GtkListView 中添加对列表模型的支持;
- GtkBuilder 添加了在本地(内联)设置对象属性的功能,而不是通过标识符使用链接;
- 向 gtk4-builder-tool 添加了命令,用于将 UI 文件从 GTK 3 转换为 GTK 4;
- 对关键主题、表格菜单和组合框的支持已停止。 GtkInvisible 小部件已被删除。
来源: opennet.ru