我有以下代码可以很好地设置 GtkTextview 的背景和前景色:
static void
setColor(GtkWidget * widget) {
auto style_context = gtk_widget_get_style_context (widget);
gtk_style_context_add_class(style_context, GTK_STYLE_CLASS_VIEW );
auto css_provider = gtk_css_provider_new();
GError *error=NULL;
auto data = g_strdup_printf("\
* {\
background-color: black;\
color: white;\
}\
*:selected {\
background-color: blue;\
color: yellow;\
}\
");
gtk_css_provider_load_from_data (css_provider, data, -1, &error);
g_free(data);
if (error){
ERROR("gtk_css_provider_load_from_data: %s\n", error->message);
g_error_free(error);
return;
}
gtk_style_context_add_provider (style_context,
GTK_STYLE_PROVIDER(css_provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
Run Code Online (Sandbox Code Playgroud)
结果是正常文本颜色和选定文本颜色都具有黑色背景和白色前景。
为什么所选文本不显示为黄色/蓝色?
任何指向示例文件的指针将不胜感激。
弄清楚了。由于缺乏任何教程或示例,我在 gtk 源代码中搜索答案。Adwaita 主题中有一个非常完整的 css 文件(gtk-contained.css)。通过查看和一些实验,以下代码将按指定设置普通文本和选定文本的前景色和背景色。
auto data = g_strdup_printf("\
textview text {\
background-color: black;\
color: white;\
}\
.view text selection {\
background-color: blue;\
color: yellow;\
}\
");
Run Code Online (Sandbox Code Playgroud)
主要问题是使用“*”。在同一个文件中,有一条评论写着“通配符不好而且麻烦,在汽车上使用它们,或者更好,不要使用它们。每次使用通配符时,都会有一只小猫痛苦地死去。”
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |