X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller-impl.cpp;h=5df31dc7eb7ad1cd1a82c41e8790e357db11a871;hb=refs%2Fchanges%2F78%2F42378%2F6;hp=7a51b86f374ccbc9167a00db2fca02176373b28d;hpb=653e65df6f984c2c11fda4b961f1015d3da1aea0;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/text-controller-impl.cpp b/dali-toolkit/internal/text/text-controller-impl.cpp index 7a51b86..5df31dc 100644 --- a/dali-toolkit/internal/text/text-controller-impl.cpp +++ b/dali-toolkit/internal/text/text-controller-impl.cpp @@ -823,6 +823,22 @@ void Controller::Impl::RetrieveSelection( std::string& selectedText, bool delete } } +void Controller::Impl::ShowClipboard() +{ + if ( mClipboard ) + { + mClipboard.ShowClipboard(); + } +} + +void Controller::Impl::HideClipboard() +{ + if ( mClipboard ) + { + mClipboard.HideClipboard(); + } +} + bool Controller::Impl::CopyStringToClipboard( std::string& source ) { //Send string to clipboard @@ -971,6 +987,7 @@ void Controller::Impl::ChangeState( EventData::State newState ) mEventData->mDecorator->SetHandleActive( RIGHT_SELECTION_HANDLE, false ); mEventData->mDecorator->SetPopupActive( false ); mEventData->mDecoratorUpdated = true; + HideClipboard(); } else if ( EventData::SELECTING == mEventData->mState ) { @@ -985,6 +1002,7 @@ void Controller::Impl::ChangeState( EventData::State newState ) if ( !IsClipboardEmpty() ) { buttonsToShow = TextSelectionPopup::Buttons ( ( buttonsToShow | TextSelectionPopup::PASTE ) ); + buttonsToShow = TextSelectionPopup::Buttons ( ( buttonsToShow | TextSelectionPopup::CLIPBOARD ) ); } mEventData->mDecorator->SetEnabledPopupButtons( buttonsToShow ); @@ -1000,6 +1018,7 @@ void Controller::Impl::ChangeState( EventData::State newState ) if ( !IsClipboardEmpty() ) { buttonsToShow = TextSelectionPopup::Buttons ( ( buttonsToShow | TextSelectionPopup::PASTE ) ); + buttonsToShow = TextSelectionPopup::Buttons ( ( buttonsToShow | TextSelectionPopup::CLIPBOARD ) ); } mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_NONE ); mEventData->mDecorator->SetEnabledPopupButtons( buttonsToShow ); @@ -1023,6 +1042,7 @@ void Controller::Impl::ChangeState( EventData::State newState ) mEventData->mDecorator->SetPopupActive( false ); } mEventData->mDecoratorUpdated = true; + HideClipboard(); } else if( EventData::EDITING_WITH_POPUP == mEventData->mState ) { @@ -1047,11 +1067,13 @@ void Controller::Impl::ChangeState( EventData::State newState ) if ( !IsClipboardEmpty() ) { buttonsToShow = TextSelectionPopup::Buttons ( ( buttonsToShow | TextSelectionPopup::PASTE ) ); + buttonsToShow = TextSelectionPopup::Buttons ( ( buttonsToShow | TextSelectionPopup::CLIPBOARD ) ); } mEventData->mDecorator->SetEnabledPopupButtons( buttonsToShow ); mEventData->mDecorator->SetPopupActive( true ); } + HideClipboard(); mEventData->mDecoratorUpdated = true; } else if ( EventData::SELECTION_HANDLE_PANNING == mEventData->mState ) @@ -1269,7 +1291,7 @@ void Controller::Impl::GetCursorPosition( CharacterIndex logical, cursorInfo.lineHeight = fontMetrics.ascender - fontMetrics.descender; cursorInfo.primaryCursorHeight = cursorInfo.lineHeight; - cursorInfo.primaryPosition.x = 0.f; + cursorInfo.primaryPosition.x = 1.f; cursorInfo.primaryPosition.y = 0.f; // Nothing else to do. @@ -1693,40 +1715,36 @@ void Controller::Impl::ScrollTextToMatchCursor() mEventData->mScrollPosition.x = currentCursorPosition.x - cursorInfo.primaryPosition.x - mAlignmentOffset.x; ClampHorizontalScroll( mVisualModel->GetActualSize() ); - bool updateCursorPosition = true; const Vector2 offset = mEventData->mScrollPosition + mAlignmentOffset; const Vector2 cursorPosition = cursorInfo.primaryPosition + offset; - if( updateCursorPosition ) - { - // Sets the cursor position. - mEventData->mDecorator->SetPosition( PRIMARY_CURSOR, - cursorPosition.x, - cursorPosition.y, - cursorInfo.primaryCursorHeight, - cursorInfo.lineHeight ); + // Sets the cursor position. + mEventData->mDecorator->SetPosition( PRIMARY_CURSOR, + cursorPosition.x, + cursorPosition.y, + cursorInfo.primaryCursorHeight, + cursorInfo.lineHeight ); - // Sets the grab handle position. - mEventData->mDecorator->SetPosition( GRAB_HANDLE, - cursorPosition.x, - cursorPosition.y, - cursorInfo.lineHeight ); + // Sets the grab handle position. + mEventData->mDecorator->SetPosition( GRAB_HANDLE, + cursorPosition.x, + cursorPosition.y, + cursorInfo.lineHeight ); - if( cursorInfo.isSecondaryCursor ) - { - mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_BOTH ); - mEventData->mDecorator->SetPosition( SECONDARY_CURSOR, - cursorInfo.secondaryPosition.x + offset.x, - cursorInfo.secondaryPosition.y + offset.y, - cursorInfo.secondaryCursorHeight, - cursorInfo.lineHeight ); - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Secondary cursor position: %f,%f\n", cursorInfo.secondaryPosition.x + offset.x, cursorInfo.secondaryPosition.y + offset.y ); - } - else - { - mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_PRIMARY ); - } + if( cursorInfo.isSecondaryCursor ) + { + mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_BOTH ); + mEventData->mDecorator->SetPosition( SECONDARY_CURSOR, + cursorInfo.secondaryPosition.x + offset.x, + cursorInfo.secondaryPosition.y + offset.y, + cursorInfo.secondaryCursorHeight, + cursorInfo.lineHeight ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Secondary cursor position: %f,%f\n", cursorInfo.secondaryPosition.x + offset.x, cursorInfo.secondaryPosition.y + offset.y ); + } + else + { + mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_PRIMARY ); } }