summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2009-01-31 05:52:58 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2009-01-31 05:52:58 +0000
commite380d4143d50eca4f715aec7f0a9fdb5ce667890 (patch)
tree880dafa40691ebd155be198976899cad7985e9c2
parentdbb97978a83ec17f9fa50169e20f98e33a6cd843 (diff)
downloadgdk-pixbuf-e380d4143d50eca4f715aec7f0a9fdb5ce667890.tar.gz
Be more careful with the beeps
svn path=/trunk/; revision=22262
-rw-r--r--ChangeLog6
-rw-r--r--gtk/gtktextview.c17
2 files changed, 16 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index dabf40ef1..17fce4d90 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2009-01-30 Matthias Clasen <mclasen@redhat.com>
+ * 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 <mclasen@redhat.com>
+
Bug 569918 – 64bit portability issue in gtkrecentchooser.c
* gtk/gtkrecentchooser.c (gtk_recent_chooser_set_use_action_appearance):
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index fa494140d..bab4155bf 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