Merge "Fixes the change of style when the text-field grabs the keyboard focus." into...
authorPaul Wisbey <p.wisbey@samsung.com>
Tue, 25 Aug 2015 09:11:11 +0000 (02:11 -0700)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 25 Aug 2015 09:11:11 +0000 (02:11 -0700)
1  2 
dali-toolkit/internal/text/text-controller.cpp

@@@ -681,13 -681,6 +681,13 @@@ void Controller::ProcessModifyEvents(
      }
    }
  
 +  if( mImpl->mEventData &&
 +      0 != events.size() )
 +  {
 +    // When the text is being modified, delay cursor blinking
 +    mImpl->mEventData->mDecorator->DelayCursorBlink();
 +  }
 +
    // Discard temporary text
    events.clear();
  }
@@@ -1105,7 -1098,12 +1105,12 @@@ void Controller::KeyboardFocusGainEvent
  
    if( mImpl->mEventData )
    {
-     mImpl->ChangeState( EventData::EDITING );
+     if( ( EventData::INACTIVE == mImpl->mEventData->mState ) ||
+         ( EventData::INTERRUPTED == mImpl->mEventData->mState ) )
+     {
+       mImpl->ChangeState( EventData::EDITING );
+       mImpl->mEventData->mUpdateCursorPosition = true; //If editing started without tap event, cursor update must be triggered.
+     }
  
      if( mImpl->IsShowingPlaceholderText() )
      {
        ShowPlaceholderText();
      }
  
-     mImpl->mEventData->mUpdateCursorPosition = true; //If editing started without tap event, cursor update must be triggered.
      mImpl->RequestRelayout();
    }
  }
@@@ -1199,7 -1196,8 +1203,8 @@@ bool Controller::KeyEvent( const Dali::
        textChanged = true;
      }
  
-     if ( mImpl->mEventData->mState != EventData::INTERRUPTED &&  mImpl->mEventData->mState != EventData::INACTIVE )
+     if ( ( mImpl->mEventData->mState != EventData::INTERRUPTED ) &&
+          ( mImpl->mEventData->mState != EventData::INACTIVE ) )
      {
        mImpl->ChangeState( EventData::EDITING );
      }
@@@ -1381,40 -1379,24 +1386,40 @@@ void Controller::TapEvent( unsigned in
    {
      if( 1u == tapCount )
      {
 +      // This is to avoid unnecessary relayouts when tapping an empty text-field
 +      bool relayoutNeeded( false );
 +
        if( mImpl->IsShowingRealText() &&
            EventData::EDITING == mImpl->mEventData->mState )
        {
 +        // Show grab handle on second tap
          mImpl->ChangeState( EventData::EDITING_WITH_GRAB_HANDLE );
 +        relayoutNeeded = true;
        }
 -      else if( EventData::EDITING_WITH_GRAB_HANDLE != mImpl->mEventData->mState  )
 +      else if( EventData::EDITING                  != mImpl->mEventData->mState &&
 +               EventData::EDITING_WITH_GRAB_HANDLE != mImpl->mEventData->mState )
        {
 -        // Handles & cursors must be repositioned after Relayout() i.e. after the Model has been updated
 +        // Show cursor on first tap
          mImpl->ChangeState( EventData::EDITING );
 +        relayoutNeeded = true;
 +      }
 +      else if( mImpl->IsShowingRealText() )
 +      {
 +        // Move the cursor
 +        relayoutNeeded = true;
        }
  
 -      Event event( Event::TAP_EVENT );
 -      event.p1.mUint = tapCount;
 -      event.p2.mFloat = x;
 -      event.p3.mFloat = y;
 -      mImpl->mEventData->mEventQueue.push_back( event );
 +      // Handles & cursors must be repositioned after Relayout() i.e. after the Model has been updated
 +      if( relayoutNeeded )
 +      {
 +        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( 2u == tapCount )
      {