如何禁用GTK3 ScrolledWindow触摸屏滚动并保存设置?
禁用GTK3下SWT ScrolledComposite的触摸滚动(Kinetic Scrolling)
下面是几种可行的配置方式,以及如何固化GtkInspector的修改:
1. 通过GTK Settings.ini配置
GTK3允许通过settings.ini全局或针对单个应用禁用滚动动效:
- 全局生效:编辑系统级配置
/etc/gtk-3.0/settings.ini或用户级~/.config/gtk-3.0/settings.ini,添加:[Settings] gtk-scrolled-window-kinetic-scrolling = false - 仅当前应用生效:在应用启动前设置环境变量
GTK_SETTINGS_FILE指向自定义配置文件(内容同上),比如启动脚本中添加:export GTK_SETTINGS_FILE=/path/to/your/app-gtk-settings.ini ./your-terminal-app
2. 通过GTK主题CSS设置
修改当前使用的GTK主题CSS文件(路径通常为/usr/share/themes/[ThemeName]/gtk-3.0/gtk.css或~/.themes/[ThemeName]/gtk-3.0/gtk.css),添加以下规则:
GtkScrolledWindow { kinetic-scrolling: false; }
如果只想针对你的应用生效,可以添加应用前缀(需先在SWT中通过Display.setAppName("YourAppName")设置应用名):
.YourAppName GtkScrolledWindow { kinetic-scrolling: false; }
保存后重启应用即可。
3. 固化GtkInspector的修改
GtkInspector的临时修改无法直接保存,可通过以下方式固化:
- 在Inspector中修改完
kinetic-scrolling为false后,右键点击目标GtkScrolledWindow部件,选择Copy CSS,将生成的规则复制到上述主题CSS或应用专属CSS文件中。 - 更可靠的方式是直接在SWT代码中设置属性(注意:使用SWT内部API需考虑版本兼容):
ScrolledComposite sc = ...; // 你的ScrolledComposite实例 long handle = sc.handle; // 调用GTK原生API关闭kinetic scrolling org.eclipse.swt.internal.gtk.GTK.gtk_scrolled_window_set_kinetic_scrolling(handle, false);
关键说明
- GTK配置属性的命名规则:文档中的
[property@Gtk.ScrolledWindow:kinetic-scrolling]对应settings.ini中的gtk-scrolled-window-kinetic-scrolling(驼峰转短横线,前缀加gtk-)。 - 所有配置变更后必须重启应用才能生效。
内容的提问来源于stack exchange,提问作者Kuba
相关产品推荐
相关产品推荐

