Use offsets instead of iterators, to avoid problems with preedit

master
Yevgen Muntyan 2006-04-25 02:30:28 -05:00
parent ca1df67483
commit 667d853637
2 changed files with 10 additions and 5 deletions

View File

@ -139,7 +139,7 @@ struct _MooTextViewPrivate {
characters in buffer's insert-text signal */
gboolean in_key_press;
gunichar char_inserted;
GtkTextIter char_inserted_pos;
int char_inserted_offset;
/***********************************************************************/
/* Selection and drag

View File

@ -1277,21 +1277,26 @@ insert_text_cb (MooTextView *view,
{
view->priv->in_key_press = FALSE;
view->priv->char_inserted = g_utf8_get_char (text);
view->priv->char_inserted_pos = *iter;
view->priv->char_inserted_offset = gtk_text_iter_get_offset (iter);
}
}
void
_moo_text_view_check_char_inserted (MooTextView *view)
_moo_text_view_check_char_inserted (MooTextView *view)
{
if (view->priv->char_inserted)
{
gboolean result;
GtkTextIter iter;
gtk_text_buffer_get_iter_at_offset (get_buffer (view), &iter,
view->priv->char_inserted_offset);
g_signal_emit (view, signals[CHAR_INSERTED], 0,
&view->priv->char_inserted_pos,
(guint) view->priv->char_inserted,
&iter, (guint) view->priv->char_inserted,
&result);
view->priv->char_inserted = 0;
}
}