首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GtkScrolledWindow -如何始终显示覆盖滚动条

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

Stack Overflow用户
提问于 2018-09-19 21:03:48
回答 1查看 1.5K关注 0票数 4

我正在使用一个GTK3应用程序,它需要总是可见的,总是活动的滚动条和可见的分步器。我已经通过css实现了这一点:

代码语言:javascript
复制
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;
}

与此代码一起:

代码语言:javascript
复制
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的一侧,而不是在GtkScrolledWindow中。这会导致应用程序(从早期版本的gtk移植的遗留应用程序)的布局问题。

但是,如果我启用覆盖滚动,滚动条在几秒钟后就会被隐藏,而不会发生对GtkScolledWindow的运动事件。

我一直在使用GtkInspector来处理我能做的任何事情,试图禁用隐藏滚动条,但没有成功。

一个黑客是设置一个定时器来继续发送运动事件到窗口,以防止滚动条隐藏.但那太丑了。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-24 04:42:44

简单地说,您不能按原样使用GtkScrollableWindow。

我深入研究了GtkScrollableWindow的源代码 (搜索‘不透明度’),以确认这种行为是被烘焙的。

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

这个项目的优先级较低,所以我可能没有机会做得更深入,但如果有任何读者能够加入“最佳”方法,至少我的好奇心是值得赞赏的:)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52414202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档