[gtk+] Make gtk_editable_get_chars work as before



commit ea3184f12972a6b03a0479ce26855c709ca41867
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Jul 13 13:37:35 2009 -0400

    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 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index de10f0d..f73f19e 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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]