Css GtkScrolledWindow-如何始终显示覆盖滚动条
我正在使用一个GTK3应用程序,它需要始终可见、始终活动的滚动条和可见的步进器。我已经能够通过css实现这一点:Css GtkScrolledWindow-如何始终显示覆盖滚动条,css,c,gtk3,Css,C,Gtk3,我正在使用一个GTK3应用程序,它需要始终可见、始终活动的滚动条和可见的步进器。我已经能够通过css实现这一点: scrollbar.hover, scrollbar { margin-left: 2px; -GtkScrollbar-has-backward-stepper: 1; -GtkScrollbar-has-forward-stepper: 1; } scrollbar trough { min-width: 30px; } scrollbar b
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);
但是将覆盖滚动设置为FALSE
意味着滚动条位于GtkScrolledWindow的一侧,而不是在GtkScrolledWindow的内部。这会导致应用程序(从早期版本的gtk移植的遗留应用程序)的布局问题
但是,如果启用覆盖滚动,滚动条在几秒钟后将隐藏,而GtkScolledWindow没有运动事件
我一直在使用GtkinSector来搞乱任何我可以尝试和禁用隐藏滚动条的东西,但没有成功
一种方法是设置一个计时器,不断向窗口发送运动事件,以防止滚动条隐藏。。。但那太难看了
关于在哪里找到禁用覆盖滚动条隐藏的秘密酱汁,有什么建议吗?简单的回答是,不能按原样使用GtkScrollableWindow
我深入(搜索“不透明度”)以确认这种行为已经发生
这可能是通过向窗口发送周期性的“运动”信号来欺骗它,使滚动条保持可见(丑陋!),或者修改GtkScrollableWindow源代码来实现的。实现我自己的GtkScrollable,或者创建一个GtkOverlay,在GtkScrollable窗口的顶部放置一个GtkScrollbar,并将这些滚动条操作映射到该窗口,就不那么麻烦了
这是该项目的较低优先级,因此我可能没有机会进一步研究,但如果任何读者能够插话使用“最佳”方法,至少出于我的好奇心,我将不胜感激:)或者,如果禁用重叠滚动,则可以使滚动条延伸GtkTreeView的整个高度,而不仅仅是内容区域。