forked from AuroraMiddleware/gtk
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
This commit is contained in:
parent
3da324fbce
commit
ddd1ac0934
@ -6021,6 +6021,7 @@ gtk_entry_enter_text (GtkEntry *entry,
|
|||||||
GtkEditable *editable = GTK_EDITABLE (entry);
|
GtkEditable *editable = GTK_EDITABLE (entry);
|
||||||
gint tmp_pos;
|
gint tmp_pos;
|
||||||
gboolean old_need_im_reset;
|
gboolean old_need_im_reset;
|
||||||
|
guint text_length;
|
||||||
|
|
||||||
old_need_im_reset = priv->need_im_reset;
|
old_need_im_reset = priv->need_im_reset;
|
||||||
priv->need_im_reset = FALSE;
|
priv->need_im_reset = FALSE;
|
||||||
@ -6030,8 +6031,12 @@ gtk_entry_enter_text (GtkEntry *entry,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (priv->overwrite_mode)
|
if (priv->overwrite_mode)
|
||||||
|
{
|
||||||
|
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);
|
gtk_entry_delete_from_cursor (entry, GTK_DELETE_CHARS, 1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tmp_pos = priv->current_pos;
|
tmp_pos = priv->current_pos;
|
||||||
gtk_editable_insert_text (editable, str, strlen (str), &tmp_pos);
|
gtk_editable_insert_text (editable, str, strlen (str), &tmp_pos);
|
||||||
|
Loading…
Reference in New Issue
Block a user