[gspell] InlineCheckerTextBuffer: change underline to PANGO_UNDERLINE_SINGLE
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gspell] InlineCheckerTextBuffer: change underline to PANGO_UNDERLINE_SINGLE
- Date: Fri, 31 Mar 2017 17:30:32 +0000 (UTC)
commit e4ff54033584f1602c20985f5e1cc7fee0fc81b4
Author: Sébastien Wilmet <swilmet gnome org>
Date: Fri Mar 31 17:33:35 2017 +0200
InlineCheckerTextBuffer: change underline to PANGO_UNDERLINE_SINGLE
Because PANGO_UNDERLINE_ERROR is buggy:
https://bugzilla.gnome.org/show_bug.cgi?id=763741
It'll permit to remove a hack in gspell that tries to work around the
bug (but doesn't work in all cases).
KWrite (KDE text editor) also inserts the equivalent of
PANGO_UNDERLINE_SINGLE. They maybe have the same bug with wavy
underlines.
The color is defined in gspell-utils.h, because it'll be useful to have
a common place to define the color for both GtkTextView and GtkEntry.
gspell/gspell-inline-checker-text-buffer.c | 8 ++++++--
gspell/gspell-text-view.c | 15 +++++++++------
gspell/gspell-utils.c | 19 ++++++++++++++++++-
gspell/gspell-utils.h | 5 ++++-
4 files changed, 37 insertions(+), 10 deletions(-)
---
diff --git a/gspell/gspell-inline-checker-text-buffer.c b/gspell/gspell-inline-checker-text-buffer.c
index 73997e4..f00b251 100644
--- a/gspell/gspell-inline-checker-text-buffer.c
+++ b/gspell/gspell-inline-checker-text-buffer.c
@@ -2,7 +2,7 @@
* This file is part of gspell, a spell-checking library.
*
* Copyright 2002 - Paolo Maggi
- * Copyright 2015, 2016 - Sébastien Wilmet
+ * Copyright 2015, 2016, 2017 - Sébastien Wilmet
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -1060,6 +1060,7 @@ set_buffer (GspellInlineCheckerTextBuffer *spell,
GtkTextIter start;
GspellTextBuffer *gspell_buffer;
GspellChecker *checker;
+ GdkRGBA underline_color;
g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
g_return_if_fail (spell->buffer == NULL);
@@ -1115,8 +1116,11 @@ set_buffer (GspellInlineCheckerTextBuffer *spell,
spell,
G_CONNECT_AFTER);
+ _gspell_utils_init_underline_rgba (&underline_color);
+
spell->highlight_tag = gtk_text_buffer_create_tag (spell->buffer, NULL,
- "underline", PANGO_UNDERLINE_ERROR,
+ "underline", PANGO_UNDERLINE_SINGLE,
+ "underline-rgba", &underline_color,
NULL);
g_object_ref (spell->highlight_tag);
diff --git a/gspell/gspell-text-view.c b/gspell/gspell-text-view.c
index 453f6e8..241b6a6 100644
--- a/gspell/gspell-text-view.c
+++ b/gspell/gspell-text-view.c
@@ -1,7 +1,7 @@
/*
* This file is part of gspell, a spell-checking library.
*
- * Copyright 2015, 2016 - Sébastien Wilmet
+ * Copyright 2015, 2016, 2017 - Sébastien Wilmet
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -32,11 +32,11 @@
* @Short_description: Spell checking support for GtkTextView
*
* #GspellTextView extends the #GtkTextView class with inline spell checking.
- * Misspelled words are highlighted with a %PANGO_UNDERLINE_ERROR, usually a red
- * wavy underline. Right-clicking a misspelled word pops up a context menu of
- * suggested replacements. The context menu also contains an “Ignore All” item
- * to add the misspelled word to the session dictionary. And an “Add” item to
- * add the word to the personal dictionary.
+ * Misspelled words are highlighted with a red %PANGO_UNDERLINE_SINGLE.
+ * Right-clicking a misspelled word pops up a context menu of suggested
+ * replacements. The context menu also contains an “Ignore All” item to add the
+ * misspelled word to the session dictionary. And an “Add” item to add the word
+ * to the personal dictionary.
*
* For a basic use-case, there is the gspell_text_view_basic_setup() convenience
* function.
@@ -53,6 +53,9 @@
* Note that #GspellTextView extends the #GtkTextView class but without
* subclassing it, because the GtkSourceView library has already a #GtkTextView
* subclass.
+ *
+ * If you want a %PANGO_UNDERLINE_ERROR instead (a wavy underline), please fix
+ * [this bug](https://bugzilla.gnome.org/show_bug.cgi?id=763741) first.
*/
typedef struct _GspellTextViewPrivate GspellTextViewPrivate;
diff --git a/gspell/gspell-utils.c b/gspell/gspell-utils.c
index c2be3e8..4582b1c 100644
--- a/gspell/gspell-utils.c
+++ b/gspell/gspell-utils.c
@@ -2,7 +2,7 @@
* This file is part of gspell, a spell-checking library.
*
* Copyright 2010 - Jesse van den Kieboom
- * Copyright 2015, 2016 - Sébastien Wilmet
+ * Copyright 2015, 2016, 2017 - Sébastien Wilmet
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -202,4 +202,21 @@ _gspell_utils_is_apostrophe_or_dash (gunichar ch)
ch == _GSPELL_RIGHT_SINGLE_QUOTATION_MARK);
}
+/* Not the full intensity for the red, it's more readable with the red a bit
+ * darker for PANGO_UNDERLINE_SINGLE.
+ * For PANGO_UNDERLINE_ERROR, the full red intensity was used.
+ */
+#define UNDERLINE_COLOR_RED_INTENSITY (0.8)
+
+void
+_gspell_utils_init_underline_rgba (GdkRGBA *underline_color)
+{
+ g_return_if_fail (underline_color != NULL);
+
+ underline_color->red = UNDERLINE_COLOR_RED_INTENSITY;
+ underline_color->green = 0.0;
+ underline_color->blue = 0.0;
+ underline_color->alpha = 1.0;
+}
+
/* ex:set ts=8 noet: */
diff --git a/gspell/gspell-utils.h b/gspell/gspell-utils.h
index 89f6909..63f482b 100644
--- a/gspell/gspell-utils.h
+++ b/gspell/gspell-utils.h
@@ -2,7 +2,7 @@
* This file is part of gspell, a spell-checking library.
*
* Copyright 2010 - Jesse van den Kieboom
- * Copyright 2015, 2016 - Sébastien Wilmet
+ * Copyright 2015, 2016, 2017 - Sébastien Wilmet
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -54,6 +54,9 @@ gboolean _gspell_utils_str_to_ascii_apostrophe (const gchar *word,
G_GNUC_INTERNAL
gboolean _gspell_utils_is_apostrophe_or_dash (gunichar ch);
+G_GNUC_INTERNAL
+void _gspell_utils_init_underline_rgba (GdkRGBA *underline_color);
+
G_END_DECLS
#endif /* GSPELL_UTILS_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]