gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:05 25 4
gpt4 key购买 nike

我正在使用一个 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 尽我所能尝试禁用隐藏滚动条,但没有成功。

一个 hack 是设置一个计时器来不断向窗口发送运动事件以防止滚动条隐藏......但这非常丑陋。

关于在哪里可以找到禁用覆盖滚动条隐藏的秘诀的任何建议?

最佳答案

简短的回答是您不能按原样使用 GtkScrollableWindow。

我深入研究了 source code of the GtkScrollableWindow (搜索“不透明度”)以确认此行为已内置。

这可能通过向窗口发送一个周期性的“运动”信号来欺骗它保持滚动条可见(丑陋!),或者,当然,修改 GtkScrollableWindow 源代码来破解。不那么棘手的方法是实现我自己的 GtkScrollable,或者可能通过创建 GtkOverlay 并将 GtkScrollbar 放在 GtkScrollableWindow 之上并将这些滚动条操作映射到窗口。

这个元素的优先级较低,所以我可能没有机会进一步深入,但如果任何读者能够提出“最佳”方法,至少出于我的好奇心,我将不胜感激 :)

关于css - GtkScrolledWindow - 如何始终显示覆盖滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com