Css GtkScrolledWindow-如何始终显示覆盖滚动条

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

我正在使用一个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);
但是
覆盖滚动设置为
FALSE
意味着滚动条位于GtkScrolledWindow的一侧,而不是在GtkScrolledWindow的内部。这会导致应用程序(从早期版本的gtk移植的遗留应用程序)的布局问题

但是,如果启用覆盖滚动,滚动条在几秒钟后将隐藏,而GtkScolledWindow没有运动事件

我一直在使用GtkinSector来搞乱任何我可以尝试和禁用隐藏滚动条的东西,但没有成功

一种方法是设置一个计时器,不断向窗口发送运动事件,以防止滚动条隐藏。。。但那太难看了


关于在哪里找到禁用覆盖滚动条隐藏的秘密酱汁,有什么建议吗?

简单的回答是,不能按原样使用GtkScrollableWindow

我深入(搜索“不透明度”)以确认这种行为已经发生

这可能是通过向窗口发送周期性的“运动”信号来欺骗它,使滚动条保持可见(丑陋!),或者修改GtkScrollableWindow源代码来实现的。实现我自己的GtkScrollable,或者创建一个GtkOverlay,在GtkScrollable窗口的顶部放置一个GtkScrollbar,并将这些滚动条操作映射到该窗口,就不那么麻烦了


这是该项目的较低优先级,因此我可能没有机会进一步研究,但如果任何读者能够插话使用“最佳”方法,至少出于我的好奇心,我将不胜感激:)

或者,如果禁用重叠滚动,则可以使滚动条延伸GtkTreeView的整个高度,而不仅仅是内容区域。