From a86b0cf0a2ce5ca96b4c476aea3fe9bfdca1a6d5 Mon Sep 17 00:00:00 2001 From: Jehan Date: Wed, 1 Jun 2016 17:02:21 +0200 Subject: [PATCH] app: create a different tag for underlined text during preedit. It still shows up as underlined during preedit, but does not toggle the underline button in the style editor. --- app/tools/gimptexttool-editor.c | 2 +- app/widgets/gimptextbuffer.c | 29 +++++++++++++++++++++++------ app/widgets/gimptextbuffer.h | 2 ++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/app/tools/gimptexttool-editor.c b/app/tools/gimptexttool-editor.c index c930194ed0..0ceb2571e9 100644 --- a/app/tools/gimptexttool-editor.c +++ b/app/tools/gimptexttool-editor.c @@ -1450,7 +1450,7 @@ gimp_text_tool_im_preedit_changed (GtkIMContext *context, { case PANGO_ATTR_UNDERLINE: gtk_text_buffer_apply_tag (buffer, - text_tool->buffer->underline_tag, + text_tool->buffer->preedit_underline_tag, &start, &end); break; case PANGO_ATTR_BACKGROUND: diff --git a/app/widgets/gimptextbuffer.c b/app/widgets/gimptextbuffer.c index a6f040c2f0..271cb41901 100644 --- a/app/widgets/gimptextbuffer.c +++ b/app/widgets/gimptextbuffer.c @@ -106,6 +106,11 @@ gimp_text_buffer_constructed (GObject *object) "underline", PANGO_UNDERLINE_SINGLE, NULL); + buffer->preedit_underline_tag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER (buffer), + "preedit-underline", + "underline", PANGO_UNDERLINE_SINGLE, + NULL); + buffer->strikethrough_tag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER (buffer), "strikethrough", "strikethrough", TRUE, @@ -1091,12 +1096,14 @@ gimp_text_buffer_set_bg_color (GimpTextBuffer *buffer, /* Pango markup attribute names */ -#define GIMP_TEXT_ATTR_NAME_SIZE "size" -#define GIMP_TEXT_ATTR_NAME_BASELINE "rise" -#define GIMP_TEXT_ATTR_NAME_KERNING "letter_spacing" -#define GIMP_TEXT_ATTR_NAME_FONT "font" -#define GIMP_TEXT_ATTR_NAME_COLOR "foreground" -#define GIMP_TEXT_ATTR_NAME_BG_COLOR "background" +#define GIMP_TEXT_ATTR_NAME_SIZE "size" +#define GIMP_TEXT_ATTR_NAME_BASELINE "rise" +#define GIMP_TEXT_ATTR_NAME_KERNING "letter_spacing" +#define GIMP_TEXT_ATTR_NAME_FONT "font" +#define GIMP_TEXT_ATTR_NAME_STYLE "style" +#define GIMP_TEXT_ATTR_NAME_COLOR "foreground" +#define GIMP_TEXT_ATTR_NAME_BG_COLOR "background" +#define GIMP_TEXT_ATTR_NAME_UNDERLINE "underline" const gchar * gimp_text_buffer_tag_to_name (GimpTextBuffer *buffer, @@ -1205,6 +1212,16 @@ gimp_text_buffer_tag_to_name (GimpTextBuffer *buffer, return "span"; } + else if (tag == buffer->preedit_underline_tag) + { + if (attribute) + *attribute = GIMP_TEXT_ATTR_NAME_UNDERLINE; + + if (value) + *value = g_strdup ("single"); + + return "span"; + } return NULL; } diff --git a/app/widgets/gimptextbuffer.h b/app/widgets/gimptextbuffer.h index dc6fa6384c..15b7ccd47f 100644 --- a/app/widgets/gimptextbuffer.h +++ b/app/widgets/gimptextbuffer.h @@ -47,6 +47,8 @@ struct _GimpTextBuffer GList *color_tags; GList *bg_color_tags; + GtkTextTag *preedit_underline_tag; + gboolean insert_tags_set; GList *insert_tags; GList *remove_tags;