Fix when typing text and the grab handle is visible/pressed. 73/43073/2
authorVictor Cebollada <v.cebollada@samsung.com>
Tue, 7 Jul 2015 10:48:36 +0000 (11:48 +0100)
committerVictor Cebollada <v.cebollada@samsung.com>
Tue, 7 Jul 2015 14:04:34 +0000 (15:04 +0100)
* Adds a new state EDITING_WITH_GRAB_HANDLE.

Change-Id: Ibb3294ce9de9ea701e1906c116a635b54d702f98
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
dali-toolkit/internal/text/text-controller-impl.cpp
dali-toolkit/internal/text/text-controller-impl.h
dali-toolkit/internal/text/text-controller.cpp

index dd6ea63a8223a3721a011231974e0e4ecc9f5332..5c93ffe6860e3dd02d7128e16d0fb14e8aa56c69 100644 (file)
@@ -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 );
index 426cc607db63393981c16fdd61c62569217edd6a..79f56d309901ec30c228b630e32d5d6f12f30d80 100644 (file)
@@ -107,6 +107,7 @@ struct EventData
     SELECTION_CHANGED,
     EDITING,
     EDITING_WITH_POPUP,
+    EDITING_WITH_GRAB_HANDLE,
     GRAB_HANDLE_PANNING,
     SELECTION_HANDLE_PANNING
   };
index 68555b718ad9e50e512f1b520c41549b658f72ad..8425f5618126c03905193851764ecad5b82ca21b 100644 (file)
@@ -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 &&