From ddd1ac093436e4c0d5a10b00d30a0f0d39d50bf1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 5 Oct 2016 12:20:14 -0400 Subject: [PATCH] entry: Fix a corner case of overwrite mode We currently beep when a character is appended at the end in overwrite mode. That is obviously not right. Patch based on a patch by Ian MacDonald. https://bugzilla.gnome.org/show_bug.cgi?id=772389 --- gtk/gtkentry.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 79588a13a3..312277a3e9 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -6021,6 +6021,7 @@ gtk_entry_enter_text (GtkEntry *entry, GtkEditable *editable = GTK_EDITABLE (entry); gint tmp_pos; gboolean old_need_im_reset; + guint text_length; old_need_im_reset = priv->need_im_reset; priv->need_im_reset = FALSE; @@ -6030,7 +6031,11 @@ gtk_entry_enter_text (GtkEntry *entry, else { if (priv->overwrite_mode) - gtk_entry_delete_from_cursor (entry, GTK_DELETE_CHARS, 1); + { + text_length = gtk_entry_buffer_get_length (get_buffer (entry)); + if (priv->current_pos < text_length) + gtk_entry_delete_from_cursor (entry, GTK_DELETE_CHARS, 1); + } } tmp_pos = priv->current_pos;