X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller.cpp;h=52c64ddbcb7eed720576a2d370d02e6e17854038;hp=8a42bcbccd6b07b79ae3f6f2df147d18fa9036e3;hb=a53706fd985dcbed954d7438222e4adf898c3500;hpb=6d65433b163c88a856f54de8c39a9f106b02449b diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 8a42bcb..52c64dd 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -1138,39 +1138,7 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent ) } else if( Dali::DALI_KEY_BACKSPACE == keyCode ) { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::KeyEvent %p DALI_KEY_BACKSPACE\n", this ); - - // IMF manager is no longer handling key-events - mImpl->ClearPreEditFlag(); - - bool removed( false ); - - if ( EventData::SELECTING == mImpl->mEventData->mState || - EventData::SELECTION_CHANGED == mImpl->mEventData->mState ) - { - removed = RemoveSelectedText(); - } - else - { - // Remove the character before the current cursor position - removed = RemoveText( -1, 1 ); - } - - if( removed ) - { - if( 0u != mImpl->mLogicalModel->mText.Count() || - !mImpl->IsPlaceholderAvailable() ) - { - mImpl->QueueModifyEvent( ModifyEvent::TEXT_DELETED ); - } - else - { - ShowPlaceholderText(); - mImpl->mEventData->mUpdateCursorPosition = true; - } - - textChanged = true; - } + textChanged = BackspaceKeyEvent(); } else { @@ -1637,6 +1605,43 @@ Controller::~Controller() delete mImpl; } +bool Controller::BackspaceKeyEvent() +{ + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::KeyEvent %p DALI_KEY_BACKSPACE\n", this ); + + // IMF manager is no longer handling key-events + mImpl->ClearPreEditFlag(); + + bool removed( false ); + + if ( EventData::SELECTING == mImpl->mEventData->mState || + EventData::SELECTION_CHANGED == mImpl->mEventData->mState ) + { + removed = RemoveSelectedText(); + } + else if( mImpl->mEventData->mPrimaryCursorPosition > 0 ) + { + // Remove the character before the current cursor position + removed = RemoveText( -1, 1 ); + } + + if( removed ) + { + if( 0u != mImpl->mLogicalModel->mText.Count() || + !mImpl->IsPlaceholderAvailable() ) + { + mImpl->QueueModifyEvent( ModifyEvent::TEXT_DELETED ); + } + else + { + ShowPlaceholderText(); + mImpl->mEventData->mUpdateCursorPosition = true; + } + } + + return removed; +} + void Controller::ShowPlaceholderText() { if( mImpl->IsPlaceholderAvailable() )