From e30911d7d0806677fbd6ee239d0c47284c05a228 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Mon, 11 Sep 2000 09:58:06 +0000 Subject: Added e_utf8_gtk_editable_get_text and e_utf8_gtk_editable_set_text. 2000-09-11 Christopher James Lahey * e-unicode.c, e-unicode.h: Added e_utf8_gtk_editable_get_text and e_utf8_gtk_editable_set_text. svn path=/trunk/; revision=5316 --- widgets/misc/e-unicode.c | 44 ++++++++++++++++++++++++++++++++++---------- widgets/misc/e-unicode.h | 2 ++ 2 files changed, 36 insertions(+), 10 deletions(-) (limited to 'widgets') diff --git a/widgets/misc/e-unicode.c b/widgets/misc/e-unicode.c index 8357977f8e..748f38a83a 100644 --- a/widgets/misc/e-unicode.c +++ b/widgets/misc/e-unicode.c @@ -21,7 +21,13 @@ e_unicode_init (void) static gboolean initialized = FALSE; if (!initialized) { - unicode_init (); + unicode_iconv_t hackhack; + + if ((hackhack = unicode_iconv_open("ASCII", "ASCII")) == (unicode_iconv_t) -1) + unicode_init (); + else + unicode_iconv_close(hackhack); + initialized = TRUE; } } @@ -202,6 +208,7 @@ e_utf8_to_gtk_string (GtkWidget *widget, const gchar *string) { return e_utf8_to_gtk_string_sized (widget, string, strlen (string)); } + gchar * e_utf8_gtk_entry_get_text (GtkEntry *entry) { @@ -213,6 +220,12 @@ e_utf8_gtk_entry_get_text (GtkEntry *entry) return u; } +gchar * +e_utf8_gtk_editable_get_text (GtkEditable *editable) +{ + return e_utf8_gtk_editable_get_chars(editable, 0, -1); +} + gchar * e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end) { @@ -238,18 +251,29 @@ e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint } void -e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text) +e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text) { - gchar *s; - - if (!text) return; - - s = e_utf8_to_gtk_string ((GtkWidget *) entry, text); - gtk_entry_set_text (entry, s); - - if (s) g_free (s); + int position; + gtk_editable_delete_text(editable, 0, -1); + if (text) + e_utf8_gtk_editable_insert_text(editable, text, strlen(text), &position); } +void +e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text) +{ + if (!text) + gtk_entry_set_text(entry, ""); + else { + gchar *s; + + s = e_utf8_to_gtk_string ((GtkWidget *) entry, text); + gtk_entry_set_text (entry, s); + + if (s) g_free (s); + } +} + GtkWidget * e_utf8_gtk_menu_item_new_with_label (GtkMenu *menu, const gchar *label) { diff --git a/widgets/misc/e-unicode.h b/widgets/misc/e-unicode.h index 654d8d94ee..57f5845c1f 100644 --- a/widgets/misc/e-unicode.h +++ b/widgets/misc/e-unicode.h @@ -37,6 +37,8 @@ gchar * e_utf8_to_gtk_string_sized (GtkWidget *widget, const gchar *string, gint gchar *e_utf8_gtk_entry_get_text (GtkEntry *entry); void e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text); +gchar *e_utf8_gtk_editable_get_text (GtkEditable *editable); +void e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text); gchar *e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end); void e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint length, gint *position); -- cgit v1.2.3