昨天,我们发布了 GTK+ 3.92.1,重庆市。由于距离上次 3.91 版本发布已经有一段时间了,这里简要介绍一下主要的变化。
此版本是我们迈向 GTK+ 4 的又一个里程碑。虽然 还有很多工作要做,但此版本让我们可以初步了解我们希望在 GTK+ 4 中实现的一些目标。
GSK
自上次发布以来,大部分工作都集中在 GSK 上。 Vulkan 渲染器现在已接近完成,至少在避免 Cairo 回退方面是这样。唯一缺失的部分是模糊阴影(诚然,这是一个重要的部分)。
自 3.91.2 版本以来,一个主要的进步是我们不再对所有文本使用 Cairo 回退。相反,文本(在标签和条目中,遗憾的是尚未在文本视图中)被转换为文本节点。每个文本节点包含一个 PangoGlyphString
和一个 PangoFont
。Vulkan 渲染器使用字形缓存来避免为每一帧重新渲染字形。
Vulkan 渲染器的内部逻辑已被重构为使用纹理而不是 Cairo 表面来作为中间结果,从而避免更多的 Cairo 回退。
Vulkan 渲染器中获得支持的其他节点类型包括模糊、重复节点、混合模式和交叉淡入淡出。在某些情况下,我们使用的着色器是非常简单的实现。非常欢迎您帮助改进它们!
作为我们使用渲染节点的一个初步示例,我们为 GtkOverlay 实现了模糊底层功能。它的工作原理是将覆盖层的“主子项”捕获为渲染节点,然后重复使用多次,使用正确的剪辑,有时使用模糊节点。
检查器
为了帮助您探索 GSK,检查器现在显示 Vulkan 信息,而记录器显示有关渲染节点的更多信息。
输入
在输入方面,事件已获得访问器,我们不再直接访问它们的字段。这是一个中间步骤,清理事件仍在进行中。我们已将传统的事件窗口部件信号(例如 ::key-press-event
)移至事件控制器,并且 GTK+ 中的大多数窗口部件已完全停止使用它们。
构建系统
我们已转换为专门使用 Meson 构建 GTK+,并且 3.92.1 版本是第一个使用 Meson 的 dist 支持完成的版本。为了发布该版本,我们还必须将文档、测试套件和已安装的测试移植为使用 Meson。
仍然有一些粗糙的边缘(我们并非 100% 正确地获取所有依赖项),但总的来说,Meson 对我们来说效果很好。
其余部分
当然,每个人都喜欢 Emoji,并且 GTK+ 3.22 中已有的相同颜色 Emoji 支持在此版本中也可用。除此之外,CSS 中的字体支持有所改进,增加了对 CSS3 font-variant 属性的支持。
当然,这取决于具有相应功能的字体。
试用一下
使用 GTK+ 3.92.1,应该很容易自己尝试这些功能。
如果您一直想进入 GTK+ 开发,但从未找到合适的机会,那么现在是参与的好时机!
嘿,我想知道是否有任何关于“如何利用 gsk 构建一个现代 gtk 小部件?”之类的教程,或者是否有任何主要小部件的实现可以被认为是良好实践的参考,或者任何可以帮助进入这个新 gsk 世界的文档。
您使用哪个屏幕录像机?
@Jose:不,目前还没有教程,因为我们仍在将 GTK 内部的小部件移植到新的 API,并根据该反馈循环找出合适的 API。现在,您将使用 GtkSnapshot API — https://git.gnome.org//browse/gtk+/tree/gtk/gtksnapshot.h — 代替您在 GTK+ 3.22 中使用的 gtk_render_*,但我们仍在对其进行调整。
超级兴奋,尤其是关于模糊!如果窗口背景也可以模糊(即 OSX 或 Windows Aero 样式),那就太酷了。
Rust 绑定怎么样?迫不及待地想在我的应用程序中使用带有 vulkano crate 的 GTK!
感谢新的更新 :)
我想让大家知道,GTKFileChooser 中存在一个多年来的错误。由 Firefox 生成的 GTK 文件选择器只会为最长边尺寸为 4096 像素或更小的图像生成预览,无论文件大小如何。
例如,在上传对话框中调用 GTKFileChooser 函数时,这会创建缩略图预览问题。我可以在哪里报告此错误?
关于
http://bugzilla.gnome.org/show_bug.cgi?id=85715
是否有任何地方解释为什么这个错误(比我女儿还老!)仍然没有修复?