gpt4 book ai didi

css - Evince 中的 GTK+ 插入符号颜色 CSS 属性

转载 作者:行者123 更新时间:2023-12-05 07:49:54 24 4
gpt4 key购买 nike

使用深色主题,Evince 中的插入符(按 F7 进入插入符模式)颜色非常浅,因此在文档的通常白色背景下显示效果不佳。

我想解决这个问题,我打算破解一个主题来做这件事,但在挖掘时,似乎 evince 使用了一个已弃用的属性:cursor-color(在 ev-view.c:4260 处) :

gtk_style_context_get_style (context,
"cursor-color",
&style_color,
NULL);

回退是:

gtk_style_context_save (context);                                   
gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, color);
gtk_style_context_restore (context);

弃用已完成 here 。所以我想尝试更新 evince 以使用 CSS 属性,然后更新我的主题以将其设置为 EvView 对象以将其应用于 evince 的主文档 View :

我在 ~/.config/gtk-3.0/gtk.css 中设置了以下 CSS 作为测试:

* {
caret-color: rgba(0,255,0,1.0);
}

这确实适用于 gedit,例如 - 主编辑器中的插入符号和对话框都是绿色的。

然后我尝试使用与 GTK 内部使用的插入符号颜色类似的逻辑(c.f. gtk/gtkstylecontext.c @ 9b86d6da2)

gtk_style_context_get (context,
gtk_style_context_get_state (context),
"caret-color", color,
NULL);

但是,这不起作用,我的颜色是透明的黑色,而不是预期的不透明绿色。然而,对 gtk_style_context_get() 的调用实际上是将颜色设置为透明黑色,而不是让它保持原状。

仅使用 GTK_STATE_FLAG_NORMAL 而不是 gtk_style_context_get_state (context) 作为回退过去也不起作用。

读取此属性的正确方法是什么,以便我可以在我的主题中设置它并获取它?

最佳答案

要获得插入符颜色,您应该执行如下操作:

GdkRGBA *caret_color;

gtk_style_context_get (context,
gtk_style_context_get_state (context),
"caret-color",
&caret_color,
NULL);

在代码的后面,在 Evince 中你有:

if (style_color) {
color->red = style_color->red / 65535.0;
color->green = style_color->green / 65535.0;
color->blue = style_color->blue / 65535.0;
color->alpha = 1;

其中颜色值从 GdkColor 转换为 GdkRGBA。一旦您获得“caret-color”,就不需要进行这种转换,我猜这可能已经按照您的预期改变了颜色。

关于css - Evince 中的 GTK+ 插入符号颜色 CSS 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799116/

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