Blame SOURCES/evolution-3.12.11-spell-entry-preedit.patch

4b6d7b
diff -up evolution-3.12.11/e-util/e-spell-entry.c.spell-entry-preedit evolution-3.12.11/e-util/e-spell-entry.c
4b6d7b
--- evolution-3.12.11/e-util/e-spell-entry.c.spell-entry-preedit	2014-11-11 13:47:54.000000000 +0100
4b6d7b
+++ evolution-3.12.11/e-util/e-spell-entry.c	2015-08-11 12:26:55.186412360 +0200
4b6d7b
@@ -44,6 +44,7 @@ struct _ESpellEntryPrivate {
4b6d7b
 	gchar **words;
4b6d7b
 	gint *word_starts;
4b6d7b
 	gint *word_ends;
4b6d7b
+	gboolean im_in_preedit;
4b6d7b
 };
4b6d7b
 
4b6d7b
 enum {
4b6d7b
@@ -721,6 +722,16 @@ spell_entry_find_position (ESpellEntry *
4b6d7b
 }
4b6d7b
 
4b6d7b
 static void
4b6d7b
+spell_entry_preedit_changed_cb (ESpellEntry *spell_entry,
4b6d7b
+				const gchar *preedit_text,
4b6d7b
+				gpointer user_data)
4b6d7b
+{
4b6d7b
+	g_return_if_fail (E_IS_SPELL_ENTRY (spell_entry));
4b6d7b
+
4b6d7b
+	spell_entry->priv->im_in_preedit = preedit_text && *preedit_text;
4b6d7b
+}
4b6d7b
+
4b6d7b
+static void
4b6d7b
 spell_entry_set_property (GObject *object,
4b6d7b
                           guint property_id,
4b6d7b
                           const GValue *value,
4b6d7b
@@ -797,6 +808,8 @@ spell_entry_constructed (GObject *object
4b6d7b
 	/* Chain up to parent's constructed() method. */
4b6d7b
 	G_OBJECT_CLASS (e_spell_entry_parent_class)->constructed (object);
4b6d7b
 
4b6d7b
+	g_signal_connect (object, "preedit-changed", G_CALLBACK (spell_entry_preedit_changed_cb), NULL);
4b6d7b
+
4b6d7b
 	e_extensible_load_extensions (E_EXTENSIBLE (object));
4b6d7b
 }
4b6d7b
 
4b6d7b
@@ -805,11 +818,14 @@ spell_entry_draw (GtkWidget *widget,
4b6d7b
                   cairo_t *cr)
4b6d7b
 {
4b6d7b
 	ESpellEntry *spell_entry = E_SPELL_ENTRY (widget);
4b6d7b
-	GtkEntry *entry = GTK_ENTRY (widget);
4b6d7b
-	PangoLayout *layout;
4b6d7b
 
4b6d7b
-	layout = gtk_entry_get_layout (entry);
4b6d7b
-	pango_layout_set_attributes (layout, spell_entry->priv->attr_list);
4b6d7b
+	if (!spell_entry->priv->im_in_preedit) {
4b6d7b
+		GtkEntry *entry = GTK_ENTRY (widget);
4b6d7b
+		PangoLayout *layout;
4b6d7b
+
4b6d7b
+		layout = gtk_entry_get_layout (entry);
4b6d7b
+		pango_layout_set_attributes (layout, spell_entry->priv->attr_list);
4b6d7b
+	}
4b6d7b
 
4b6d7b
 	/* Chain up to parent's draw() method. */
4b6d7b
 	return GTK_WIDGET_CLASS (e_spell_entry_parent_class)->
4b6d7b
@@ -868,6 +884,7 @@ e_spell_entry_init (ESpellEntry *spell_e
4b6d7b
 	spell_entry->priv->attr_list = pango_attr_list_new ();
4b6d7b
 	spell_entry->priv->checkers = NULL;
4b6d7b
 	spell_entry->priv->checking_enabled = TRUE;
4b6d7b
+	spell_entry->priv->im_in_preedit = FALSE;
4b6d7b
 
4b6d7b
 	g_signal_connect (
4b6d7b
 		spell_entry, "popup-menu",