X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller.cpp;h=e8df944d471a7c52b201dfeda25280a4498884be;hb=3af09a190a90030049f6190ddd86522dc066c58a;hp=52c64ddbcb7eed720576a2d370d02e6e17854038;hpb=a53706fd985dcbed954d7438222e4adf898c3500;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 52c64dd..e8df944 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -23,6 +23,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include @@ -84,6 +85,17 @@ void Controller::SetText( const std::string& text ) CharacterIndex lastCursorIndex = 0u; + if( mImpl->mEventData ) + { + // If popup shown then hide it by switching to Editing state + if ( EventData::SELECTING == mImpl->mEventData->mState || + EventData::SELECTION_CHANGED == mImpl->mEventData->mState || + EventData::EDITING_WITH_POPUP == mImpl->mEventData->mState ) + { + mImpl->ChangeState( EventData::EDITING ); + } + } + if( !text.empty() ) { // Convert text into UTF-32 @@ -1220,6 +1232,8 @@ void Controller::InsertText( const std::string& text, Controller::InsertType typ ResetText(); } + mImpl->ChangeState( EventData::EDITING ); + // Handle the IMF (predicitive text) state changes if( mImpl->mEventData ) { @@ -1325,9 +1339,8 @@ void Controller::TapEvent( unsigned int tapCount, float x, float y ) const bool isShowingPlaceholderText = mImpl->IsShowingPlaceholderText(); if( 1u == tapCount ) { - bool tapDuringEditMode( EventData::EDITING == mImpl->mEventData->mState ); - - if( !isShowingPlaceholderText && tapDuringEditMode ) + if( !isShowingPlaceholderText && + ( EventData::EDITING == mImpl->mEventData->mState ) ) { mImpl->mEventData->mDecorator->SetHandleActive( GRAB_HANDLE, true ); mImpl->mEventData->mDecorator->SetPopupActive( false ); @@ -1463,6 +1476,20 @@ void Controller::DecorationEvent( HandleType handleType, HandleState state, floa } } +void Controller::PasteText( const std::string& stringToPaste ) +{ + InsertText( stringToPaste, Text::Controller::COMMIT ); + mImpl->ChangeState( EventData::EDITING ); + mImpl->RequestRelayout(); +} + +void Controller::PasteClipboardItemEvent() +{ + ClipboardEventNotifier notifier( ClipboardEventNotifier::Get() ); + std::string stringToPaste( notifier.GetContent() ); + PasteText( stringToPaste ); +} + void Controller::TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::Buttons button ) { if( NULL == mImpl->mEventData ) @@ -1500,9 +1527,7 @@ void Controller::TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::Butt { std::string stringToPaste(""); mImpl->GetTextFromClipboard( 0, stringToPaste ); // Paste latest item from system clipboard - InsertText( stringToPaste, Text::Controller::CLIPBOARD ); - mImpl->ChangeState( EventData::EDITING ); - mImpl->RequestRelayout(); + PasteText( stringToPaste ); break; } case Toolkit::TextSelectionPopup::SELECT: @@ -1524,6 +1549,7 @@ void Controller::TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::Butt } case Toolkit::TextSelectionPopup::CLIPBOARD: { + mImpl->ShowClipboard(); break; } case Toolkit::TextSelectionPopup::NONE: @@ -1599,7 +1625,6 @@ ImfManager::ImfCallbackData Controller::OnImfEvent( ImfManager& imfManager, cons return callbackData; } - Controller::~Controller() { delete mImpl;