【发布时间】:2018-09-19 21:03:48
【问题描述】:
我正在使用一个 GTK3 应用程序,该应用程序需要始终可见、始终处于活动状态的滚动条和可见的步进器。我已经能够用 css 实现这一点:
scrollbar.hover,
scrollbar {
margin-left: 2px;
-GtkScrollbar-has-backward-stepper: 1;
-GtkScrollbar-has-forward-stepper: 1;
}
scrollbar trough {
min-width: 30px;
}
scrollbar button {
min-height: 30px;
min-width: 30px;
}
scrollbar.right slider {
min-height: 70px;
min-width: 30px;
}
连同此代码:
GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); //never horizontal, always vertical
g_object_set(sw, "overlay-scrolling", FALSE, NULL);
然而将overlay-scrolling 设置为FALSE 意味着滚动条在GtkScrolledWindow 的一侧,而不是在其中。这会导致应用程序(从早期版本的 gtk 移植的遗留应用程序)出现布局问题。
但是,如果我启用覆盖滚动,滚动条会在几秒钟后隐藏,而 GtkScolledWindow 没有运动事件。
我一直在使用 GtkInspector 来解决任何我可以尝试禁用隐藏滚动条的操作,但没有成功。
一个技巧是设置一个计时器来不断向窗口发送运动事件以防止滚动条隐藏......但这非常难看。
关于在哪里找到禁用覆盖滚动条隐藏的秘诀有什么建议吗?
【问题讨论】:
-
另外,如果覆盖滚动被禁用,一种使滚动条扩展 GtkTreeView 的完整高度的方法,而不仅仅是内容区域。