X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fdecorator%2Ftext-decorator.cpp;h=bdfc35609f22765a84fc28adf5baad94d01d87ad;hb=9dfe326faf6f6376bb7f4415a8ca35792c669d4c;hp=a22cc9055d70b981196e51e80d04347e4964cddc;hpb=738d8f6dec864b75dd25632c3a853422e2ffa757;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp index a22cc90..bdfc356 100644 --- a/dali-toolkit/internal/text/decorator/text-decorator.cpp +++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp @@ -20,39 +20,21 @@ // EXTERNAL INCLUDES #include -#include + #include -#include #include -#include -#include #include -#include -#include #include #include -#include #include -#include -#include -#include #include -#include -#include #include -#include #include -#include // INTERNAL INCLUDES -#include #include -#include -#include #include -#include -#include #ifdef DEBUG_ENABLED #define DECORATOR_DEBUG @@ -273,6 +255,7 @@ struct Decorator::Impl : public ConnectionTracker mScrollThreshold( SCROLL_THRESHOLD ), mScrollSpeed( SCROLL_SPEED ), mScrollDistance( SCROLL_DISTANCE ), + mTextDepth( 0u ), mActiveCopyPastePopup( false ), mCursorBlinkStatus( true ), mPrimaryCursorVisible( false ), @@ -296,6 +279,7 @@ struct Decorator::Impl : public ConnectionTracker // Show or hide the cursors CreateCursors(); + if( mPrimaryCursor ) { const CursorImpl& cursor = mCursor[PRIMARY_CURSOR]; @@ -338,7 +322,7 @@ struct Decorator::Impl : public ConnectionTracker CreateGrabHandle(); grabHandle.actor.SetPosition( position.x, - position.y + grabHandle.lineHeight ); + position.y + grabHandle.lineHeight ); // TODO : Fix for multiline. } grabHandle.actor.SetVisible( isVisible ); } @@ -367,13 +351,13 @@ struct Decorator::Impl : public ConnectionTracker if( isPrimaryVisible ) { primary.actor.SetPosition( primaryPosition.x, - primaryPosition.y + primary.lineHeight ); + primaryPosition.y + primary.lineHeight ); // TODO : Fix for multiline. } if( isSecondaryVisible ) { secondary.actor.SetPosition( secondaryPosition.x, - secondaryPosition.y + secondary.lineHeight ); + secondaryPosition.y + secondary.lineHeight ); // TODO : Fix for multiline. } } primary.actor.SetVisible( isPrimaryVisible ); @@ -400,18 +384,13 @@ struct Decorator::Impl : public ConnectionTracker if( mActiveCopyPastePopup ) { - if( !mCopyPastePopup.actor.GetParent() ) - { - mActiveLayer.Add( mCopyPastePopup.actor ); - } - - mCopyPastePopup.actor.RaiseAbove( mActiveLayer ); + ShowPopup(); } else { if( mCopyPastePopup.actor ) { - mCopyPastePopup.actor.Unparent(); + mCopyPastePopup.actor.HidePopup(); } } } @@ -427,6 +406,22 @@ struct Decorator::Impl : public ConnectionTracker DeterminePositionPopup(); } + void ShowPopup() + { + if ( !mCopyPastePopup.actor ) + { + return; + } + + if( !mCopyPastePopup.actor.GetParent() ) + { + mActiveLayer.Add( mCopyPastePopup.actor ); + } + + mCopyPastePopup.actor.RaiseAbove( mActiveLayer ); + mCopyPastePopup.actor.ShowPopup(); + } + void DeterminePositionPopup() { if ( !mActiveCopyPastePopup ) @@ -461,7 +456,6 @@ struct Decorator::Impl : public ConnectionTracker void PopupRelayoutComplete( Actor actor ) { // Size negotiation for CopyPastePopup complete so can get the size and constrain position within bounding box. - mCopyPastePopup.actor.OnRelayoutSignal().Disconnect( this, &Decorator::Impl::PopupRelayoutComplete ); DeterminePositionPopup(); } @@ -803,24 +797,25 @@ struct Decorator::Impl : public ConnectionTracker mQuadVertices.SetData( &vertices[ 0 ] ); mQuadIndices.SetData( &indices[ 0 ] ); - mQuadGeometry = Geometry::New(); - mQuadGeometry.AddVertexBuffer( mQuadVertices ); - mQuadGeometry.SetIndexBuffer( mQuadIndices ); - - if( mHighlightRenderer ) + if( !mQuadGeometry ) { - mHighlightRenderer.SetGeometry( mQuadGeometry ); + mQuadGeometry = Geometry::New(); + mQuadGeometry.AddVertexBuffer( mQuadVertices ); } - else + mQuadGeometry.SetIndexBuffer( mQuadIndices ); + + if( !mHighlightRenderer ) { mHighlightRenderer = Dali::Renderer::New( mQuadGeometry, mHighlightMaterial ); mHighlightActor.AddRenderer( mHighlightRenderer ); } - - mHighlightActor.SetPosition( mHighlightPosition.x, - mHighlightPosition.y ); } + mHighlightActor.SetPosition( mHighlightPosition.x, + mHighlightPosition.y ); + + mHighlightQuadList.clear(); + mHighlightRenderer.SetDepthIndex( mTextDepth - 2u ); // text is rendered at mTextDepth and text's shadow at mTextDepth -1u. } } @@ -1513,19 +1508,17 @@ void Decorator::SetEnabledPopupButtons( TextSelectionPopup::Buttons& enabledButt { mImpl->mEnabledPopupButtons = enabledButtonsBitMask; - UnparentAndReset( mImpl->mCopyPastePopup.actor ); - mImpl->mCopyPastePopup.actor = TextSelectionPopup::New( mImpl->mEnabledPopupButtons, - &mImpl->mTextSelectionPopupCallbackInterface ); + if ( !mImpl->mCopyPastePopup.actor ) + { + mImpl->mCopyPastePopup.actor = TextSelectionPopup::New( &mImpl->mTextSelectionPopupCallbackInterface ); #ifdef DECORATOR_DEBUG - mImpl->mCopyPastePopup.actor.SetName("mCopyPastePopup"); + mImpl->mCopyPastePopup.actor.SetName("mCopyPastePopup"); #endif - mImpl->mCopyPastePopup.actor.SetAnchorPoint( AnchorPoint::CENTER ); - mImpl->mCopyPastePopup.actor.OnRelayoutSignal().Connect( mImpl, &Decorator::Impl::PopupRelayoutComplete ); // Position popup after size negotiation - - if( mImpl->mActiveLayer ) - { - mImpl->mActiveLayer.Add( mImpl->mCopyPastePopup.actor ); + mImpl->mCopyPastePopup.actor.SetAnchorPoint( AnchorPoint::CENTER ); + mImpl->mCopyPastePopup.actor.OnRelayoutSignal().Connect( mImpl, &Decorator::Impl::PopupRelayoutComplete ); // Position popup after size negotiation } + + mImpl->mCopyPastePopup.actor.EnableButtons( mImpl->mEnabledPopupButtons ); } TextSelectionPopup::Buttons& Decorator::GetEnabledPopupButtons()