From e0104a4bc26461b848c61c06cf885a3b6adf469e Mon Sep 17 00:00:00 2001 From: Colomban Wendling Date: Mon, 11 Feb 2013 04:47:21 +0100 Subject: [PATCH] Port new configurable document status colors to GTK3 --- data/geany.css | 11 +++++++++++ src/document.c | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/geany.css b/data/geany.css index 555b4a443..2f546603b 100644 --- a/data/geany.css +++ b/data/geany.css @@ -23,3 +23,14 @@ #geany-search-entry-no-match:selected { background-color: #771111; } + +/* document status colors */ +#geany-document-status-changed { + color: #ff0000; +} +#geany-document-status-disk-changed { + color: #ff7f00; +} +#geany-document-status-readonly { + color: #007f00; +} diff --git a/src/document.c b/src/document.c index b22d683cf..5c7673d20 100644 --- a/src/document.c +++ b/src/document.c @@ -2770,6 +2770,25 @@ const GdkColor *document_get_status_color(GeanyDocument *doc) return NULL; if (! document_status_styles[status].loaded) { +#if GTK_CHECK_VERSION(3, 0, 0) + GdkRGBA color; + GtkWidgetPath *path = gtk_widget_path_new(); + GtkStyleContext *ctx = gtk_style_context_new(); + gtk_widget_path_append_type(path, GTK_TYPE_WINDOW); + gtk_widget_path_append_type(path, GTK_TYPE_BOX); + gtk_widget_path_append_type(path, GTK_TYPE_NOTEBOOK); + gtk_widget_path_append_type(path, GTK_TYPE_LABEL); + gtk_widget_path_iter_set_name(path, -1, document_status_styles[status].name); + gtk_style_context_set_screen(ctx, gtk_widget_get_screen(GTK_WIDGET(doc->editor->sci))); + gtk_style_context_set_path(ctx, path); + gtk_style_context_get_color(ctx, GTK_STATE_NORMAL, &color); + document_status_styles[status].color.red = 0xffff * color.red; + document_status_styles[status].color.green = 0xffff * color.green; + document_status_styles[status].color.blue = 0xffff * color.blue; + document_status_styles[status].loaded = TRUE; + gtk_widget_path_unref(path); + g_object_unref(ctx); +#else GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(doc->editor->sci)); gchar *path = g_strconcat("GeanyMainWindow.GtkHBox.GtkNotebook.", document_status_styles[status].name, NULL); @@ -2778,6 +2797,7 @@ const GdkColor *document_get_status_color(GeanyDocument *doc) document_status_styles[status].color = style->fg[GTK_STATE_NORMAL]; document_status_styles[status].loaded = TRUE; g_free(path); +#endif } return &document_status_styles[status].color; } -- 2.11.4.GIT