From: John Darrington Date: Mon, 15 Aug 2016 06:53:04 +0000 (+0200) Subject: Prevent the font selection of comment dialog affecting other widgets. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2cddc9354b23b5fca6b20e8980e06373c05e0955;p=pspp Prevent the font selection of comment dialog affecting other widgets. I had not properly understood how gtk_css_provider worked. Hopefully my understanding is now more accurate. --- diff --git a/src/ui/gui/psppire-dialog-action-comments.c b/src/ui/gui/psppire-dialog-action-comments.c index aa32ba0a42..bbb0a9dfda 100644 --- a/src/ui/gui/psppire-dialog-action-comments.c +++ b/src/ui/gui/psppire-dialog-action-comments.c @@ -194,27 +194,36 @@ psppire_dialog_action_comments_activate (PsppireDialogAction *pda) PangoLayout * layout ; PangoRectangle rect; + /* Since we're going to truncate lines to 80 chars, we need a monospaced font otherwise it'll look silly */ PangoFontDescription *font_desc = pango_font_description_from_string ("monospace"); - - GtkStyleContext *style = - gtk_widget_get_style_context (GTK_WIDGET (act->textview)); - gtk_style_context_add_class (style, "psppire-dialog-comment-pane"); - GtkCssProvider *cssp = gtk_css_provider_get_default (); - - gchar *str = pango_font_description_to_string (font_desc); - gchar *css = - g_strdup_printf (".psppire-dialog-comment-pane {font: %s }", str); - g_free (str); - - if (!gtk_css_provider_load_from_data (cssp, css, -1, NULL)) - g_warning ("Failed to load font css \"%s\"", css); - - g_free (css); + { + GtkStyleContext *style = gtk_widget_get_style_context (GTK_WIDGET (act->textview)); + GtkCssProvider *cssp = gtk_css_provider_new (); + + gchar *str = pango_font_description_to_string (font_desc); + gchar *css = + g_strdup_printf ("* {font: %s}", str); + g_free (str); + + GError *err = NULL; + gtk_css_provider_load_from_data (cssp, css, -1, &err); + if (err) + { + g_warning ("Failed to load font css \"%s\": %s", css, err->message); + g_error_free (err); + } + g_free (css); + + gtk_style_context_add_provider (style, + GTK_STYLE_PROVIDER (cssp), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref (cssp); + } - /* and let's just make sure that a complete line fits into the + /* And let's just make sure that a complete line fits into the widget's width */ context = gtk_widget_create_pango_context (act->textview); layout = pango_layout_new (context);