From 74e452d3c95e36d3b87b6a599dbc163bbba8c102 Mon Sep 17 00:00:00 2001 From: Victor Cebollada Date: Tue, 7 Jul 2015 11:48:36 +0100 Subject: [PATCH] Fix when typing text and the grab handle is visible/pressed. * Adds a new state EDITING_WITH_GRAB_HANDLE. Change-Id: Ibb3294ce9de9ea701e1906c116a635b54d702f98 Signed-off-by: Victor Cebollada --- .../internal/text/text-controller-impl.cpp | 18 ++++++++++++++++++ dali-toolkit/internal/text/text-controller-impl.h | 1 + dali-toolkit/internal/text/text-controller.cpp | 22 ++++++++++------------ 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/dali-toolkit/internal/text/text-controller-impl.cpp b/dali-toolkit/internal/text/text-controller-impl.cpp index dd6ea63..5c93ffe 100644 --- a/dali-toolkit/internal/text/text-controller-impl.cpp +++ b/dali-toolkit/internal/text/text-controller-impl.cpp @@ -1144,6 +1144,24 @@ void Controller::Impl::ChangeState( EventData::State newState ) HideClipboard(); mEventData->mDecoratorUpdated = true; } + else if( EventData::EDITING_WITH_GRAB_HANDLE == mEventData->mState ) + { + mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_PRIMARY ); + if( mEventData->mCursorBlinkEnabled ) + { + mEventData->mDecorator->StartCursorBlink(); + } + // Grab handle is not shown until a tap is received whilst EDITING + mEventData->mDecorator->SetHandleActive( GRAB_HANDLE, true ); + mEventData->mDecorator->SetHandleActive( LEFT_SELECTION_HANDLE, false ); + mEventData->mDecorator->SetHandleActive( RIGHT_SELECTION_HANDLE, false ); + if( mEventData->mGrabHandlePopupEnabled ) + { + mEventData->mDecorator->SetPopupActive( false ); + } + mEventData->mDecoratorUpdated = true; + HideClipboard(); + } else if ( EventData::SELECTION_HANDLE_PANNING == mEventData->mState ) { mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_NONE ); diff --git a/dali-toolkit/internal/text/text-controller-impl.h b/dali-toolkit/internal/text/text-controller-impl.h index 426cc60..79f56d3 100644 --- a/dali-toolkit/internal/text/text-controller-impl.h +++ b/dali-toolkit/internal/text/text-controller-impl.h @@ -107,6 +107,7 @@ struct EventData SELECTION_CHANGED, EDITING, EDITING_WITH_POPUP, + EDITING_WITH_GRAB_HANDLE, GRAB_HANDLE_PANNING, SELECTION_HANDLE_PANNING }; diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 68555b7..8425f56 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -1364,23 +1364,21 @@ void Controller::TapEvent( unsigned int tapCount, float x, float y ) if( !isShowingPlaceholderText && ( EventData::EDITING == mImpl->mEventData->mState ) ) { - mImpl->mEventData->mDecorator->SetHandleActive( GRAB_HANDLE, true ); - mImpl->mEventData->mDecorator->SetPopupActive( false ); + mImpl->ChangeState( EventData::EDITING_WITH_GRAB_HANDLE ); } - - // Handles & cursors must be repositioned after Relayout() i.e. after the Model has been updated - if( mImpl->mEventData ) + else if( EventData::EDITING_WITH_GRAB_HANDLE != mImpl->mEventData->mState ) { + // Handles & cursors must be repositioned after Relayout() i.e. after the Model has been updated mImpl->ChangeState( EventData::EDITING ); + } - Event event( Event::TAP_EVENT ); - event.p1.mUint = tapCount; - event.p2.mFloat = x; - event.p3.mFloat = y; - mImpl->mEventData->mEventQueue.push_back( event ); + Event event( Event::TAP_EVENT ); + event.p1.mUint = tapCount; + event.p2.mFloat = x; + event.p3.mFloat = y; + mImpl->mEventData->mEventQueue.push_back( event ); - mImpl->RequestRelayout(); - } + mImpl->RequestRelayout(); } else if( !isShowingPlaceholderText && mImpl->mEventData->mSelectionEnabled && -- 2.7.4