From bc0da6a71e58887fec881e58ea784b9521370228 Mon Sep 17 00:00:00 2001 From: "v.cebollada" Date: Wed, 19 Aug 2015 17:09:00 +0900 Subject: [PATCH 1/1] Fix when deleting with predictive text enabled. * Clears the unwanted characters. * Fixes the cursor position. Change-Id: Ief7973d8ba80b5d4de3d93baa452a7cb8363693a Signed-off-by: v.cebollada --- dali-toolkit/internal/text/text-controller.cpp | 27 +++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 233e764..b88ca99 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -329,7 +329,7 @@ bool Controller::RemoveText( int cursorOffset, int numberOfChars ) DALI_LOG_INFO( gLogFilter, Debug::General, "Controller::RemoveText %p mText.Count() %d cursor %d cursorOffset %d numberOfChars %d\n", this, mImpl->mLogicalModel->mText.Count(), mImpl->mEventData->mPrimaryCursorPosition, cursorOffset, numberOfChars ); - if( ! mImpl->IsShowingPlaceholderText() ) + if( !mImpl->IsShowingPlaceholderText() ) { // Delete at current cursor position Vector& currentText = mImpl->mLogicalModel->mText; @@ -785,7 +785,14 @@ void Controller::TextDeletedEvent() REORDER ); // Queue a cursor reposition event; this must wait until after DoRelayout() - mImpl->mEventData->mScrollAfterDelete = true; + if( 0u == mImpl->mLogicalModel->mText.Count() ) + { + mImpl->mEventData->mUpdateCursorPosition = true; + } + else + { + mImpl->mEventData->mScrollAfterDelete = true; + } } bool Controller::DoRelayout( const Size& size, @@ -1639,7 +1646,21 @@ ImfManager::ImfCallbackData Controller::OnImfEvent( ImfManager& imfManager, cons } case ImfManager::DELETESURROUNDING: { - RemoveText( imfEvent.cursorOffset, imfEvent.numberOfChars ); + update = RemoveText( imfEvent.cursorOffset, imfEvent.numberOfChars ); + + if( update ) + { + if( 0u != mImpl->mLogicalModel->mText.Count() || + !mImpl->IsPlaceholderAvailable() ) + { + mImpl->QueueModifyEvent( ModifyEvent::TEXT_DELETED ); + } + else + { + ShowPlaceholderText(); + mImpl->mEventData->mUpdateCursorPosition = true; + } + } requestRelayout = true; break; } -- 2.7.4