2008-03-27 Michael Natterer <mitch@imendio.com>
authorMichael Natterer <mitch@imendio.com>
Thu, 27 Mar 2008 12:21:47 +0000 (12:21 +0000)
committerMichael Natterer <mitch@imendio.com>
Thu, 27 Mar 2008 12:21:47 +0000 (12:21 +0000)
Fixes: NB#81696: The passcode is not overwritten even after
selecting

* src/hildon-code-dialog.c
(hildon_code_dialog_button_clicked)
(hildon_code_dialog_im_commit): don't use gtk_entry_append_text()
because that doesn't overwrite selected text. Instead, emit the
"commit" signal on the entry's im_context so the entry's normal
insert logic is triggered. Set the cursor to the end of the entry
after each insert operation so that we *only* insert in the middle
of the text if something was selected.

ChangeLog
src/hildon-code-dialog.c

index de84b0b..68afea1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
 2008-03-27  Michael Natterer  <mitch@imendio.com>
 
+       Fixes: NB#81696: The passcode is not overwritten even after
+       selecting
+
+       * src/hildon-code-dialog.c
+       (hildon_code_dialog_button_clicked)
+       (hildon_code_dialog_im_commit): don't use gtk_entry_append_text()
+       because that doesn't overwrite selected text. Instead, emit the
+       "commit" signal on the entry's im_context so the entry's normal
+       insert logic is triggered. Set the cursor to the end of the entry
+       after each insert operation so that we *only* insert in the middle
+       of the text if something was selected.
+
+2008-03-27  Michael Natterer  <mitch@imendio.com>
+
        Enable fixing: NB#79916 and NB#79918: The help topic for Color
        selector cannot be opened
 
index 23109f7..b207189 100644 (file)
@@ -450,7 +450,14 @@ hildon_code_dialog_button_clicked               (GtkButton *button,
 
     if (number && *number )
     {
-        gtk_entry_append_text (GTK_ENTRY (priv->entry), number);
+        gtk_editable_set_editable (GTK_EDITABLE (priv->entry), TRUE);
+
+        g_signal_emit_by_name (GTK_ENTRY (priv->entry)->im_context, "commit",
+                               number);
+
+        gtk_editable_set_editable (GTK_EDITABLE (priv->entry), FALSE);
+
+        gtk_editable_set_position (GTK_EDITABLE (priv->entry), -1);
     }
     else
     {
@@ -473,7 +480,14 @@ hildon_code_dialog_im_commit                    (GtkIMContext *im_context,
 
     if (g_ascii_isdigit(*utf8))
     {
-        gtk_entry_append_text (GTK_ENTRY (priv->entry), utf8);
+        gtk_editable_set_editable (GTK_EDITABLE (priv->entry), TRUE);
+
+        g_signal_emit_by_name (GTK_ENTRY (priv->entry)->im_context, "commit",
+                               utf8);
+
+        gtk_editable_set_editable (GTK_EDITABLE (priv->entry), FALSE);
+
+        gtk_editable_set_position (GTK_EDITABLE (priv->entry), -1);
     }
 }