gtk+ r21543 - in trunk: . gtk
- From: matthiasc svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r21543 - in trunk: . gtk
- Date: Mon, 29 Sep 2008 14:28:19 +0000 (UTC)
Author: matthiasc
Date: Mon Sep 29 14:28:19 2008
New Revision: 21543
URL: http://svn.gnome.org/viewvc/gtk+?rev=21543&view=rev
Log:
2008-09-29 Matthias Clasen <mclasen redhat com>
Bug 371908 â Password Entry broken
Bug 317002 â Disable input method completely in GtkEntry when it's
in invisible mode.
* gtk/gtkentry.c (gtk_entry_backspace): Make backspace behave
properly when invisible.
* gtk/gtkentry.c (gtk_entry_create_layout): Show preedit even if
invisible.
* gtk/gtkentry.c (gtk_entry_set_visibility): Don't disable input
methods when making the entry invisible.
Modified:
trunk/ChangeLog
trunk/gtk/gtkentry.c
Modified: trunk/gtk/gtkentry.c
==============================================================================
--- trunk/gtk/gtkentry.c (original)
+++ trunk/gtk/gtkentry.c Mon Sep 29 14:28:19 2008
@@ -1085,7 +1085,6 @@
else
gtk_entry_unset_invisible_char (entry);
break;
-
case PROP_SCROLL_OFFSET:
case PROP_CURSOR_POSITION:
default:
@@ -3010,7 +3009,7 @@
return;
}
- prev_pos = gtk_entry_move_logically(entry, entry->current_pos, -1);
+ prev_pos = gtk_entry_move_logically (entry, entry->current_pos, -1);
if (prev_pos < entry->current_pos)
{
@@ -3020,7 +3019,8 @@
pango_layout_get_log_attrs (layout, &log_attrs, &n_attrs);
- if (log_attrs[entry->current_pos].backspace_deletes_character)
+ if (entry->visible &&
+ log_attrs[entry->current_pos].backspace_deletes_character)
{
gchar *cluster_text;
gchar *normalized_text;
@@ -3432,27 +3432,17 @@
gint preedit_len_chars;
gunichar invisible_char;
- ch_len = g_utf8_strlen (entry->text, entry->n_bytes);
- preedit_len_chars = g_utf8_strlen (preedit_string, -1);
- ch_len += preedit_len_chars;
-
if (entry->invisible_char != 0)
invisible_char = entry->invisible_char;
else
invisible_char = ' '; /* just pick a char */
-
+
+ ch_len = g_utf8_strlen (entry->text, entry->n_bytes);
append_char (tmp_string, invisible_char, ch_len);
-
- /* Fix cursor index to point to invisible char corresponding
- * to the preedit, fix preedit_length to be the length of
- * the invisible chars representing the preedit
- */
cursor_index =
g_utf8_offset_to_pointer (tmp_string->str, entry->current_pos) -
tmp_string->str;
- preedit_length =
- preedit_len_chars *
- g_unichar_to_utf8 (invisible_char, NULL);
+ g_string_insert (tmp_string, cursor_index, preedit_string);
}
pango_layout_set_text (layout, tmp_string->str, tmp_string->len);
@@ -4632,28 +4622,6 @@
if (entry->visible != visible)
{
- if (GTK_WIDGET_HAS_FOCUS (entry) && !visible)
- gtk_im_context_focus_out (entry->im_context);
-
- g_object_unref (entry->im_context);
-
- if (visible)
- entry->im_context = gtk_im_multicontext_new ();
- else
- entry->im_context = gtk_im_context_simple_new ();
-
- g_signal_connect (entry->im_context, "commit",
- G_CALLBACK (gtk_entry_commit_cb), entry);
- g_signal_connect (entry->im_context, "preedit-changed",
- G_CALLBACK (gtk_entry_preedit_changed_cb), entry);
- g_signal_connect (entry->im_context, "retrieve-surrounding",
- G_CALLBACK (gtk_entry_retrieve_surrounding_cb), entry);
- g_signal_connect (entry->im_context, "delete-surrounding",
- G_CALLBACK (gtk_entry_delete_surrounding_cb), entry);
-
- if (GTK_WIDGET_HAS_FOCUS (entry) && visible)
- gtk_im_context_focus_in (entry->im_context);
-
entry->visible = visible;
g_object_notify (G_OBJECT (entry), "visibility");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]