Fix key event propagation in text controller
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / text-controller-event-handler.cpp
index d5c41a1..59f0b8d 100644 (file)
@@ -336,6 +336,15 @@ bool Controller::EventHandler::KeyEvent(Controller& controller, const Dali::KeyE
       controller.mImpl->RequestRelayout();
     }
   }
+  else if((NULL != controller.mImpl->mEventData) && (keyEvent.GetState() == KeyEvent::UP))
+  {
+    // Handles specific keys that require event propagation.
+    if(Dali::DALI_KEY_BACK == keyEvent.GetKeyCode())
+    {
+      // Do nothing
+      return false;
+    }
+  }
 
   if(textChanged &&
      (NULL != controller.mImpl->mEditableControlInterface))
@@ -809,6 +818,21 @@ InputMethodContext::CallbackData Controller::EventHandler::OnInputMethodContextE
       retrieveCursor = true;
       break;
     }
+    case InputMethodContext::SELECTION_SET:
+    {
+      uint32_t start = static_cast<uint32_t>(inputMethodContextEvent.startIndex);
+      uint32_t end = static_cast<uint32_t>(inputMethodContextEvent.endIndex);
+      if(start == end)
+      {
+        controller.SetPrimaryCursorPosition(start, true);
+      }
+      else
+      {
+        controller.SelectText(start, end);
+      }
+
+      break;
+    }
     case InputMethodContext::VOID:
     {
       // do nothing