X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller.cpp;h=3b9c7256a27cf588bdb662d972e0191b0edca916;hb=refs%2Fchanges%2F24%2F42824%2F2;hp=814c4fe3e10beca408916245375068ff29ea91e4;hpb=a1a0675dc4a30f302eadcee1641d939ced5c823e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 814c4fe..3b9c725 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -1109,16 +1109,18 @@ void Controller::KeyboardFocusLostEvent() if( mImpl->mEventData ) { - mImpl->ChangeState( EventData::INACTIVE ); - - if( mImpl->IsShowingPlaceholderText() ) + if ( EventData::INTERRUPTED != mImpl->mEventData->mState ) { - // Revert to regular placeholder-text when not editing - ShowPlaceholderText(); - } + mImpl->ChangeState( EventData::INACTIVE ); - mImpl->RequestRelayout(); + if( mImpl->IsShowingPlaceholderText() ) + { + // Revert to regular placeholder-text when not editing + ShowPlaceholderText(); + } + } } + mImpl->RequestRelayout(); } bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent ) @@ -1152,10 +1154,17 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent ) { textChanged = BackspaceKeyEvent(); } - else if ( IsKey( keyEvent, Dali::DALI_KEY_POWER ) || IsKey( keyEvent, Dali::DALI_KEY_MENU ) ) + else if ( IsKey( keyEvent, Dali::DALI_KEY_POWER ) ) + { + mImpl->ChangeState( EventData::INTERRUPTED ); // State is not INACTIVE as expect to return to edit mode. + // Avoids calling the InsertText() method which can delete selected text + } + else if ( IsKey( keyEvent, Dali::DALI_KEY_MENU ) || + IsKey( keyEvent, Dali::DALI_KEY_HOME ) ) { - // Do nothing when the Power or Menu Key is pressed. - // It avoids call the InsertText() method and delete the selected text. + mImpl->ChangeState( EventData::INACTIVE ); + // Menu/Home key behaviour does not allow edit mode to resume like Power key + // Avoids calling the InsertText() method which can delete selected text } else { @@ -1168,7 +1177,10 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent ) textChanged = true; } - mImpl->ChangeState( EventData::EDITING ); // todo Confirm this is the best place to change the state of + if ( mImpl->mEventData->mState != EventData::INTERRUPTED && mImpl->mEventData->mState != EventData::INACTIVE ) + { + mImpl->ChangeState( EventData::EDITING ); + } mImpl->RequestRelayout(); } @@ -1351,11 +1363,11 @@ void Controller::TapEvent( unsigned int tapCount, float x, float y ) mImpl->mEventData->mDecorator->SetPopupActive( false ); } - mImpl->ChangeState( EventData::EDITING ); - // Handles & cursors must be repositioned after Relayout() i.e. after the Model has been updated if( mImpl->mEventData ) { + mImpl->ChangeState( EventData::EDITING ); + Event event( Event::TAP_EVENT ); event.p1.mUint = tapCount; event.p2.mFloat = x; @@ -1393,6 +1405,26 @@ void Controller::PanEvent( Gesture::State state, const Vector2& displacement ) } } +void Controller::LongPressEvent( Gesture::State state, float x, float y ) +{ + DALI_ASSERT_DEBUG( mImpl->mEventData && "Unexpected PanEvent" ); + + if ( mImpl->IsShowingPlaceholderText() || mImpl->mLogicalModel->mText.Count() == 0u ) + { + if ( mImpl->mEventData ) + { + Event event( Event::LONG_PRESS_EVENT ); + event.p1.mInt = state; + mImpl->mEventData->mEventQueue.push_back( event ); + mImpl->RequestRelayout(); + } + } + else if( mImpl->mEventData ) + { + SelectEvent( x, y, false ); + } +} + void Controller::SelectEvent( float x, float y, bool selectAll ) { if( mImpl->mEventData )