几年前,我写了一篇关于 GTK+ 3 中滚动的文章。现在是时候再看一看!
常见情况
当时描述的更改的基本思想仍然相同。我们期望触摸板(或轨迹点)滚动是最常见的滚动形式之一,而滚动条则充当一个狭窄的指示器。
正如您所见,我们更改了光标以指示滚动,并且您可以自由地在所有方向上滚动。它也是动感的。
经典滚动
当然,仍然可以单击并拖动滑块进行经典滚动。
“经典”滚动的另一个方面是,您可以单击滑块之外的槽,然后将位置跳转到您单击的位置,或以页面大小的增量跳转。
默认情况下,主要单击会跳转,而 Shift + 主要单击则按页面跳转。我们刚刚重新添加了鼠标中键作为 Shift + 主要单击的替代方案,因为这是许多人习惯的常见替代方案。主要是出于历史原因,GTK+ 有一个设置,gtk-primary-button-warps-slider,它会切换主要单击和 Shift + 主要单击在此处的角色。
典型的键盘快捷键(Page Up、Page Down、Home、End)可让您使用键盘控制滚动。
平滑滚动
GTK+ 中的滚动还有更多您可能不知道的内容。我们很久以前引入的一个功能是“缩放”或“微调”模式,它可以减慢滚动速度,从而实现像素级的精确定位。
要触发此模式,您可以在滑块中长按或按住 Shift 键单击。正如您在视频中看到的,一旦您将指针移动到滚动条下方或上方,它将保持相同的放松速度滚动,直到您松开为止。
作为此主题的变体,我们最近添加了平滑滚动的可变速度版本。
要触发它,您可以在滑块之外的槽中进行辅助单击。滚动开始后,您可以通过将指针移近或远离滚动条来控制速度。一旦您发现它,就会非常容易上瘾!
自定义位置
作为最后一个功能,应用程序可以添加一个上下文菜单,该菜单通过在滑块上进行辅助单击来触发,并使其滚动到重要的位置。
就这样,开始滚动吧!
这很酷,但这并不是我所说的平滑滚动
https://bugzilla.gnome.org/show_bug.cgi?id=774261
谢谢。我不知道可变速度平滑滚动。
在 Nautilus 中工作正常,但(像往常一样)在 WebKit2 的 WebView 中不起作用,并且我在 Epiphany 中尝试了几次,直到我发现这始终存在问题。
> 正如您在视频中看到的,一旦您将指针移动到滚动条下方或上方,它将保持相同的放松速度滚动,直到您松开为止。
这对我来说根本不起作用。当我停止在“慢速滚动”模式下移动鼠标时,它会停止滚动,无论我的鼠标在哪里。
这是一个错误吗?我正在运行 gtk3-3.22.21-1.fc26.x86_64 (Fedora 26),并且我可以使用包括 nautilus 和 gtk3-demo 在内的大多数 gtk3 应用程序重现此问题。
很棒的文章!
Chris:在 3.22.24、Debian 不稳定版、x11 上也是如此。
我想知道这是否与最近对范围的抓取所做的更改有关。
也许有点离题,但由于 GTK 支持动感滚动,为什么 GNOME WEB 没有?因为实际上,动感滚动在滚动网页时最有用。
只有当鼠标指针超出滚动条的 X 和 Y 坐标时,“缩放/微调”模式才有效。否则,无效。
动感滚动在 epiphany-3.26.x 和 webkitgtk-2.18.0 中对我有效。主要问题是 WebKitWebView 不使用 GtkScrolledWindow,而是有自己的实现。因此,需要单独实现动感滚动等功能。您可能使用的是旧版本。
出于某种原因,右键单击/缩放滚动现在似乎在这里起作用了,版本 3.22.25。耶!
(批准这些评论都没有多大意义;我记错了;右键单击一直都可以,但是长按仍然不会移动,除非您在移动鼠标,这与描述/视频显示的不同)