GTK+ 3.92

昨天,我们发布了 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+ 开发但从未找到合适的机会,那么现在是参与其中的好时机!

滚动入门

几年前,我写了一篇关于 GTK+ 3 中滚动的 文章。是时候再次回顾一下了!

常见情况

当时描述的更改的基本思想仍然相同。我们期望触摸板(或指点杆)滚动是最常见的滚动形式之一,并且滚动条充当此功能的狭窄指示器。

正如您所看到的,我们会更改光标以指示滚动,并且您可以在所有方向上自由滚动。它也是动态的。

经典滚动

当然,仍然可以单击并拖动滑块进行经典滚动。

“经典”滚动的另一个方面是,您可以单击滑块外部的槽,并将位置扭曲到您单击的位置,或按页面大小增量跳转。

默认情况下,主单击会扭曲,而 Shift + 主单击会按页面跳转。我们刚刚添加了中键单击作为 Shift + 主单击的替代方法,因为这是许多人习惯的常见替代方法。由于主要是历史原因,GTK+ 有一个设置 *gtk-primary-button-warps-slider*,它会切换主单击和 Shift + 主单击在此方面的作用。

典型的键盘快捷键(Page Up、Page Down、Home、End)使您可以使用键盘控制滚动。

平滑滚动

GTK+ 中的滚动还有更多您可能不了解的功能。我们很久以前引入的一项功能是“缩放”或“微调”模式,它可以减慢滚动速度,从而实现像素精确定位。

要触发此模式,您可以在滑块中长按或按住 Shift 并单击。正如您在视频中看到的那样,一旦您将指针移动到滚动条的下方或上方,它将以相同的放松速度继续滚动,直到您松开为止。

作为此主题的变体,最近我们添加了平滑滚动的变速变体。

要触发它,您可以在滑块外部的槽中进行辅助单击。一旦滚动开始,您可以通过将指针移动到离滚动条更近或更远的位置来控制速度。一旦您发现它,就会很容易上瘾!

自定义位置

作为最后一个功能,应用程序可以添加一个上下文菜单,该菜单由对滑块的辅助单击触发,并使其滚动到重要的位置。

就这样,继续滚动吧!