=== modified file 'Nux/TextEntry.cpp'
--- Nux/TextEntry.cpp	2012-03-29 04:18:48 +0000
+++ Nux/TextEntry.cpp	2012-04-25 15:40:36 +0000
@@ -2327,6 +2327,14 @@
         key_sym == NUX_VK_TAB ||
         key_sym == NUX_VK_ESCAPE)
       {
+        if (key_sym == NUX_VK_LEFT ||
+            key_sym == NUX_VK_RIGHT ||
+            key_sym == NUX_VK_ENTER ||
+            key_sym == NUX_KP_ENTER)
+        {
+          return true;
+        }
+
         if (multiline_ && (key_sym == NUX_VK_UP))
         {
           // Navigate between the lines of the text entry.

=== modified file 'tests/xtest-text-entry.cpp'
--- tests/xtest-text-entry.cpp	2012-03-02 05:34:03 +0000
+++ tests/xtest-text-entry.cpp	2012-04-25 15:40:36 +0000
@@ -38,10 +38,15 @@
   virtual void UserInterfaceSetup();
 
   void TextEntryClick(nux::TextEntry* text_entry);
+  void OnActivated();
+  void OnCursorMoved(int);
   void ResetEvents();
+
   nux::TextEntry* text_entry_;
 
   bool clicked_;
+  bool activated_;
+  bool cursor_moved_;
 };
 
 TextTextEntry::TextTextEntry(const char* program_name,
@@ -49,6 +54,9 @@
   int window_height,
   int program_life_span)
   : ProgramTemplate(program_name, window_width, window_height, program_life_span)
+  , clicked_(false)
+  , activated_(false)
+  , cursor_moved_(false)
 {
   ResetEvents();
   text_entry_ = NULL;
@@ -62,6 +70,8 @@
 void TextTextEntry::ResetEvents()
 {
   clicked_ = false;
+  activated_ = false;
+  cursor_moved_ = false;
 }
 
 void TextTextEntry::TextEntryClick(nux::TextEntry* text_entry)
@@ -72,10 +82,22 @@
   }
 }
 
+void TextTextEntry::OnActivated()
+{
+  activated_ = true;
+}
+
+void TextTextEntry::OnCursorMoved(int position)
+{
+  cursor_moved_ = true;
+}
+
 void TextTextEntry::UserInterfaceSetup()
 {
   nux::VLayout* main_layout = new nux::VLayout(NUX_TRACKER_LOCATION);
   text_entry_ = new nux::TextEntry("", NUX_TRACKER_LOCATION);
+  text_entry_->activated.connect(sigc::mem_fun(this, &TextTextEntry::OnActivated));
+  text_entry_->cursor_moved.connect(sigc::mem_fun(this, &TextTextEntry::OnCursorMoved));
   text_entry_->SetFontSize(76);
 
   main_layout->AddView(text_entry_, 0, nux::MINOR_POSITION_CENTER, nux::MINOR_SIZE_FULL);
@@ -157,6 +179,46 @@
 
   // Type "Nux"
   // The cursor is at the end of the line
+  // Unset/Set the focus on the text entry
+  // Move the cursor
+  {
+    test.ViewSendString("Nux");
+    test.TestReportMsg(test_textentry->text_entry_->GetText() == "Nux", "Typed \"Nux\"");
+
+    test_textentry->GetWindowThread()->GetWindowCompositor().SetKeyFocusArea(NULL); 
+    test_textentry->GetWindowThread()->GetWindowCompositor().SetKeyFocusArea(test_textentry->text_entry_);
+
+    test_textentry->ResetEvents();
+    test.ViewSendLeft();
+    nux::SleepForMilliseconds(500);
+    test.TestReportMsg(test_textentry->cursor_moved_, "Cursor moved.");
+
+    test.ViewSendCtrlA();   
+    test.ViewSendDelete();
+  }
+
+  // Type "Nux"
+  // The cursor is at the end of the line
+  // Unset/Set the focus on the text entry
+  // Press enter
+  {
+    test.ViewSendString("Nux");
+    test.TestReportMsg(test_textentry->text_entry_->GetText() == "Nux", "Typed \"Nux\"");
+
+    test_textentry->GetWindowThread()->GetWindowCompositor().SetKeyFocusArea(NULL); 
+    test_textentry->GetWindowThread()->GetWindowCompositor().SetKeyFocusArea(test_textentry->text_entry_);
+
+    test_textentry->ResetEvents();
+    test.ViewSendReturn();
+    nux::SleepForMilliseconds(500);
+    test.TestReportMsg(test_textentry->activated_, "Activated.");
+
+    test.ViewSendCtrlA();   
+    test.ViewSendDelete();
+  }
+
+  // Type "Nux"
+  // The cursor is at the end of the line
   // Simulate CTRL+A to select the entire text
   // Simulate DELETE key to delete the text
   {

