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