Truncate selections on text insertion
authorEmmanuele Bassi <ebassi@linux.intel.com>
Thu, 11 Dec 2008 12:10:46 +0000 (12:10 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Thu, 11 Dec 2008 12:10:46 +0000 (12:10 +0000)
When inserting text on a key press event we should also truncate
the selection.

We should not truncate the selection when inserting any Unicode
character, since changing the selection also changes the cursor
position - and one of the invariants we inherited from ClutterEntry
is that inserting characters programmatically does not change the
cursor position.

clutter/clutter-text.c

index baec33d..284c33d 100644 (file)
@@ -898,7 +898,8 @@ static gboolean
 clutter_text_key_press (ClutterActor    *actor,
                         ClutterKeyEvent *event)
 {
-  ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
+  ClutterText *self = CLUTTER_TEXT (actor);
+  ClutterTextPrivate *priv = self->priv;
   ClutterBindingPool *pool;
   gboolean res;
   gint keyval;
@@ -925,7 +926,8 @@ clutter_text_key_press (ClutterActor    *actor,
 
       if (g_unichar_validate (key_unichar))
         {
-          clutter_text_insert_unichar (CLUTTER_TEXT (actor), key_unichar);
+          clutter_text_truncate_selection (self);
+          clutter_text_insert_unichar (self, key_unichar);
 
           return TRUE;
         }