From ea3184f12972a6b03a0479ce26855c709ca41867 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 13 Jul 2009 13:37:35 -0400 Subject: [PATCH] Make gtk_editable_get_chars work as before It used to return actual entry contents, regardless of visiblity. Make it do that again. This was reported in bug 588461. --- gtk/gtkentry.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index de10f0d834..f73f19edb2 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -4314,7 +4314,25 @@ gtk_entry_get_chars (GtkEditable *editable, gint start_pos, gint end_pos) { - return gtk_entry_get_display_text (GTK_ENTRY (editable), start_pos, end_pos); + GtkEntry *entry = GTK_ENTRY (editable); + GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry); + const gchar *text; + gint text_length; + gint start_index, end_index; + + text = gtk_entry_buffer_get_text (priv->buffer); + text_length = gtk_entry_buffer_get_length (priv->buffer); + + if (end_pos < 0) + end_pos = text_length; + + start_pos = MIN (text_length, start_pos); + end_pos = MIN (text_length, end_pos); + + start_index = g_utf8_offset_to_pointer (text, start_pos) - entry->text; + end_index = g_utf8_offset_to_pointer (text, end_pos) - entry->text; + + return g_strndup (text + start_index, end_index - start_index); } static void