X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller.cpp;h=aed8d32775168df23fa12e95643d1d49f3a3be57;hb=a4fa71ebecb9ed103fa3e64004e99b728f9190c2;hp=d683c7f8ce83127c31dfe1f599fdf1f7eb714dbc;hpb=8a647e87a01c5c78451653c1264a9eea81ac9b20;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 d683c7f..aed8d32 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -2264,6 +2264,56 @@ void Controller::SetEditable( bool editable ) } } +void Controller::ScrollBy( Vector2 scroll ) +{ + if( mImpl->mEventData && (fabs(scroll.x) > Math::MACHINE_EPSILON_0 || fabs(scroll.y) > Math::MACHINE_EPSILON_0)) + { + const Vector2& layoutSize = mImpl->mModel->mVisualModel->GetLayoutSize(); + const Vector2 currentScroll = mImpl->mModel->mScrollPosition; + + scroll.x = -scroll.x; + scroll.y = -scroll.y; + + if( fabs(scroll.x) > Math::MACHINE_EPSILON_0 ) + { + mImpl->mModel->mScrollPosition.x += scroll.x; + mImpl->ClampHorizontalScroll( layoutSize ); + } + + if( fabs(scroll.y) > Math::MACHINE_EPSILON_0 ) + { + mImpl->mModel->mScrollPosition.y += scroll.y; + mImpl->ClampVerticalScroll( layoutSize ); + } + + if (mImpl->mModel->mScrollPosition != currentScroll) + { + mImpl->mEventData->mDecorator->UpdatePositions( mImpl->mModel->mScrollPosition - currentScroll ); + mImpl->RequestRelayout(); + } + } +} + +float Controller::GetHorizontalScrollPosition() +{ + if( mImpl->mEventData ) + { + //scroll values are negative internally so we convert them to positive numbers + return -mImpl->mModel->mScrollPosition.x; + } + return 0; +} + +float Controller::GetVerticalScrollPosition() +{ + if( mImpl->mEventData ) + { + //scroll values are negative internally so we convert them to positive numbers + return -mImpl->mModel->mScrollPosition.y; + } + return 0; +} + void Controller::DecorationEvent( HandleType handleType, HandleState state, float x, float y ) { EventHandler::DecorationEvent(*this, handleType, state, x, y); @@ -2648,8 +2698,6 @@ bool Controller::RemoveText( int cursorOffset, Vector::Iterator first = currentText.Begin() + cursorIndex; Vector::Iterator last = first + numberOfCharacters; - currentText.Erase( first, last ); - if( NULL != mImpl->mEditableControlInterface ) { std::string utf8; @@ -2657,6 +2705,8 @@ bool Controller::RemoveText( int cursorOffset, mImpl->mEditableControlInterface->TextDeleted( cursorIndex, numberOfCharacters, utf8 ); } + currentText.Erase( first, last ); + // Cursor position retreat oldCursorIndex = cursorIndex;