滚动入门

几年前,我写了一篇关于 GTK+ 3 中滚动的文章。现在是时候再看一看!

常见情况

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

正如您所见,我们更改了光标以指示滚动,并且您可以自由地在所有方向上滚动。它也是动感的。

经典滚动

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

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

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

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

平滑滚动

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

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

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

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

自定义位置

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

就这样,开始滚动吧!

关于“滚动入门”的 10 条评论

  1. 谢谢。我不知道可变速度平滑滚动。
    在 Nautilus 中工作正常,但(像往常一样)在 WebKit2 的 WebView 中不起作用,并且我在 Epiphany 中尝试了几次,直到我发现这始终存在问题。

  2. > 正如您在视频中看到的,一旦您将指针移动到滚动条下方或上方,它将保持相同的放松速度滚动,直到您松开为止。

    这对我来说根本不起作用。当我停止在“慢速滚动”模式下移动鼠标时,它会停止滚动,无论我的鼠标在哪里。

    这是一个错误吗?我正在运行 gtk3-3.22.21-1.fc26.x86_64 (Fedora 26),并且我可以使用包括 nautilus 和 gtk3-demo 在内的大多数 gtk3 应用程序重现此问题。

  3. Chris:在 3.22.24、Debian 不稳定版、x11 上也是如此。

    我想知道这是否与最近对范围的抓取所做的更改有关。

  4. 也许有点离题,但由于 GTK 支持动感滚动,为什么 GNOME WEB 没有?因为实际上,动感滚动在滚动网页时最有用。

  5. 只有当鼠标指针超出滚动条的 X 和 Y 坐标时,“缩放/微调”模式才有效。否则,无效。

    动感滚动在 epiphany-3.26.x 和 webkitgtk-2.18.0 中对我有效。主要问题是 WebKitWebView 不使用 GtkScrolledWindow,而是有自己的实现。因此,需要单独实现动感滚动等功能。您可能使用的是旧版本。

  6. (批准这些评论都没有多大意义;我记错了;右键单击一直都可以,但是长按仍然不会移动,除非您在移动鼠标,这与描述/视频显示的不同)

评论已关闭。