From 8ed81b9354358cf4435d19ced725a8ecdd89c904 Mon Sep 17 00:00:00 2001 From: Seoyeon Kim Date: Mon, 20 Nov 2017 16:33:57 +0900 Subject: [PATCH] Add Delete Key event in TextController - When the user presses 'Delete' key of H/W Keyboard, the character after the current cursor position is removed. Change-Id: I82dd02d79510e7e2197c19fbacad66629595741a Signed-off-by: Seoyeon Kim --- .../src/dali-toolkit/utc-Dali-TextEditor.cpp | 5 +++++ dali-toolkit/internal/text/text-controller.cpp | 19 ++++++++++++++----- dali-toolkit/internal/text/text-controller.h | 5 +++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp index 2cc4328..6d4c3e3 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -2030,6 +2031,10 @@ int utcDaliTextEditorEvent06(void) application.SendNotification(); application.Render(); + application.ProcessEvent( GenerateKey( "", "", Dali::DevelKey::DALI_KEY_DELETE, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); + application.SendNotification(); + application.Render(); + END_TEST; } diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 7847fb9..0a951cc 100755 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -25,6 +25,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include @@ -2370,9 +2371,10 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent ) // Will request for relayout. relayoutNeeded = true; } - else if( Dali::DALI_KEY_BACKSPACE == keyCode ) + else if( ( Dali::DALI_KEY_BACKSPACE == keyCode ) || + ( Dali::DevelKey::DALI_KEY_DELETE == keyCode ) ) { - textChanged = BackspaceKeyEvent(); + textChanged = DeleteEvent( keyCode ); // Will request for relayout. relayoutNeeded = true; @@ -3617,9 +3619,9 @@ void Controller::SelectEvent( float x, float y, bool selectAll ) } } -bool Controller::BackspaceKeyEvent() +bool Controller::DeleteEvent( int keyCode ) { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::KeyEvent %p DALI_KEY_BACKSPACE\n", this ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::KeyEvent %p KeyCode : %d \n", this, keyCode ); bool removed = false; @@ -3635,13 +3637,20 @@ bool Controller::BackspaceKeyEvent() { removed = RemoveSelectedText(); } - else if( mImpl->mEventData->mPrimaryCursorPosition > 0 ) + else if( ( mImpl->mEventData->mPrimaryCursorPosition > 0 ) && ( keyCode == Dali::DALI_KEY_BACKSPACE) ) { // Remove the character before the current cursor position removed = RemoveText( -1, 1, UPDATE_INPUT_STYLE ); } + else if( ( mImpl->mEventData->mPrimaryCursorPosition >= 0 ) && ( keyCode == Dali::DevelKey::DALI_KEY_DELETE ) ) + { + // Remove the character after the current cursor position + removed = RemoveText( 0, + 1, + UPDATE_INPUT_STYLE ); + } if( removed ) { diff --git a/dali-toolkit/internal/text/text-controller.h b/dali-toolkit/internal/text/text-controller.h index 86a0e33..d5ec2ae 100755 --- a/dali-toolkit/internal/text/text-controller.h +++ b/dali-toolkit/internal/text/text-controller.h @@ -1377,11 +1377,12 @@ private: // Events. void SelectEvent( float x, float y, bool selectAll ); /** - * @brief Helper to KeyEvent() to handle the backspace case. + * @brief Helper to KeyEvent() to handle the backspace or delete key case. * + * @param[in] keyCode The keycode for the key pressed * @return True if a character was deleted. */ - bool BackspaceKeyEvent(); + bool DeleteEvent( int keyCode ); private: // Helpers. -- 2.7.4