From e380d4143d50eca4f715aec7f0a9fdb5ce667890 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 31 Jan 2009 05:52:58 +0000 Subject: [PATCH] Be more careful with the beeps svn path=/trunk/; revision=22262 --- ChangeLog | 6 ++++++ gtk/gtktextview.c | 17 ++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index dabf40ef14..17fce4d906 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-30 Matthias Clasen + + * gtk/gtktextview.c (preedit_changed_handler): Be more careful + with the beeps, since preedit-changed is occasionally emitted + without actual input. Pointed out by Tor Lillqvist. + 2009-01-30 Matthias Clasen Bug 569918 – 64bit portability issue in gtkrecentchooser.c diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index fa494140d0..bab4155bf7 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -7320,21 +7320,24 @@ gtk_text_view_preedit_changed_handler (GtkIMContext *context, /* Keypress events are passed to input method even if cursor position is not editable; * so beep here if it's multi-key input sequence, input method will be reset in - * key-press-event handler. */ - if (!gtk_text_iter_can_insert (&iter, text_view->editable)) + * key-press-event handler. + */ + gtk_im_context_get_preedit_string (context, &str, &attrs, &cursor_pos); + + if (str && str[0] && !gtk_text_iter_can_insert (&iter, text_view->editable)) { gtk_widget_error_bell (GTK_WIDGET (text_view)); - return; + goto out; } - gtk_im_context_get_preedit_string (context, &str, &attrs, &cursor_pos); gtk_text_layout_set_preedit_string (text_view->layout, str, attrs, cursor_pos); - pango_attr_list_unref (attrs); - g_free (str); - if (GTK_WIDGET_HAS_FOCUS (text_view)) gtk_text_view_scroll_mark_onscreen (text_view, gtk_text_buffer_get_insert (get_buffer (text_view))); + +out: + pango_attr_list_unref (attrs); + g_free (str); } static gboolean