From: Bowon Ryu Date: Thu, 26 May 2022 09:38:52 +0000 (+0000) Subject: Merge "Fix key event propagation in text controller" into devel/master X-Git-Tag: dali_2.1.24~2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=ce4a6e3803b711fa4c399160c48bcaa9f51f31e4;hp=77525ca172708d0973a54532bb4f26cacf8784e6 Merge "Fix key event propagation in text controller" into devel/master --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp index 82b0f80..5ec1035 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp @@ -3286,6 +3286,14 @@ int utcDaliTextFieldSomeSpecialKeys(void) application.SendNotification(); application.Render(); + // Generate a Back key event. Nothing happens to the text field. + application.ProcessEvent(GenerateKey("XF86Back", "", "XF86Back", DALI_KEY_BACK, 0, 0, Integration::KeyEvent::DOWN, "XF86Back", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE)); + application.ProcessEvent(GenerateKey("XF86Back", "", "XF86Back", DALI_KEY_BACK, 0, 0, Integration::KeyEvent::UP, "XF86Back", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE)); + + // Render and notify + application.SendNotification(); + application.Render(); + // The text shouldn't be deleted. DALI_TEST_EQUALS(field.GetProperty(TextField::Property::TEXT), longText, TEST_LOCATION); diff --git a/dali-toolkit/internal/text/text-controller-event-handler.cpp b/dali-toolkit/internal/text/text-controller-event-handler.cpp index 1d4be23..59f0b8d 100644 --- a/dali-toolkit/internal/text/text-controller-event-handler.cpp +++ b/dali-toolkit/internal/text/text-controller-event-handler.cpp @@ -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))