X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fdecorator%2Ftext-decorator.cpp;h=9ec055e01cf15cf49ced8cce9a4646c10853d0a2;hb=0f006fbeb3f9dc630e3893887e8c6e5ae44b8e0a;hp=c4d0a6826403028b0cfce2fadf07b28edf6dfa7e;hpb=dbe59842bb6226eaccfc27f189e35c7614c6d814;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 c4d0a68..9ec055e 100644 --- a/dali-toolkit/internal/text/decorator/text-decorator.cpp +++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp @@ -260,6 +260,7 @@ struct Decorator::Impl : public ConnectionTracker mTextDepth( 0u ), mActiveCopyPastePopup( false ), mCursorBlinkStatus( true ), + mDelayCursorBlink( false ), mPrimaryCursorVisible( false ), mSecondaryCursorVisible( false ), mSwapSelectionHandles( false ), @@ -294,7 +295,7 @@ struct Decorator::Impl : public ConnectionTracker position.y ); mPrimaryCursor.SetSize( Size( mCursorWidth, cursor.cursorHeight ) ); } - mPrimaryCursor.SetVisible( mPrimaryCursorVisible ); + mPrimaryCursor.SetVisible( mPrimaryCursorVisible && mCursorBlinkStatus ); } if( mSecondaryCursor ) { @@ -306,7 +307,7 @@ struct Decorator::Impl : public ConnectionTracker cursor.position.y ); mSecondaryCursor.SetSize( Size( mCursorWidth, cursor.cursorHeight ) ); } - mSecondaryCursor.SetVisible( mSecondaryCursorVisible ); + mSecondaryCursor.SetVisible( mSecondaryCursorVisible && mCursorBlinkStatus ); } // Show or hide the grab handle @@ -323,7 +324,7 @@ struct Decorator::Impl : public ConnectionTracker CreateGrabHandle(); - grabHandle.actor.SetPosition( position.x, + grabHandle.actor.SetPosition( position.x - floor( 0.5f * mCursorWidth ), position.y + grabHandle.lineHeight ); // TODO : Fix for multiline. } grabHandle.actor.SetVisible( isVisible ); @@ -471,7 +472,7 @@ struct Decorator::Impl : public ConnectionTracker cursor = CreateSolidColorActor( color ); cursor.SetSortModifier( DECORATION_DEPTH_INDEX ); cursor.SetParentOrigin( ParentOrigin::TOP_LEFT ); // Need to set the default parent origin as CreateSolidColorActor() sets a different one. - cursor.SetAnchorPoint( AnchorPoint::TOP_CENTER ); + cursor.SetAnchorPoint( AnchorPoint::TOP_RIGHT ); } // Add or Remove cursor(s) from parent @@ -535,18 +536,26 @@ struct Decorator::Impl : public ConnectionTracker bool OnCursorBlinkTimerTick() { - // Cursor blinking - if ( mPrimaryCursor ) + if( !mDelayCursorBlink ) { - mPrimaryCursor.SetVisible( mPrimaryCursorVisible && mCursorBlinkStatus ); + // Cursor blinking + if ( mPrimaryCursor ) + { + mPrimaryCursor.SetVisible( mPrimaryCursorVisible && mCursorBlinkStatus ); + } + if ( mSecondaryCursor ) + { + mSecondaryCursor.SetVisible( mSecondaryCursorVisible && mCursorBlinkStatus ); + } + + mCursorBlinkStatus = !mCursorBlinkStatus; } - if ( mSecondaryCursor ) + else { - mSecondaryCursor.SetVisible( mSecondaryCursorVisible && mCursorBlinkStatus ); + // Resume blinking + mDelayCursorBlink = false; } - mCursorBlinkStatus = !mCursorBlinkStatus; - return true; } @@ -772,7 +781,6 @@ struct Decorator::Impl : public ConnectionTracker for( std::size_t v = 0; iter != endIter; ++iter,v+=4 ) { - QuadCoordinates& quad = *iter; // top-left (v+0) @@ -846,7 +854,10 @@ struct Decorator::Impl : public ConnectionTracker mHighlightQuadList.clear(); - mHighlightRenderer.SetDepthIndex( mTextDepth - 2u ); // text is rendered at mTextDepth and text's shadow at mTextDepth -1u. + if( mHighlightRenderer ) + { + mHighlightRenderer.SetDepthIndex( mTextDepth - 2u ); // text is rendered at mTextDepth and text's shadow at mTextDepth -1u. + } } } @@ -1310,6 +1321,7 @@ struct Decorator::Impl : public ConnectionTracker bool mActiveCopyPastePopup : 1; bool mCursorBlinkStatus : 1; ///< Flag to switch between blink on and blink off. + bool mDelayCursorBlink : 1; ///< Used to avoid cursor blinking when entering text. bool mPrimaryCursorVisible : 1; ///< Whether the primary cursor is visible. bool mSecondaryCursorVisible : 1; ///< Whether the secondary cursor is visible. bool mSwapSelectionHandles : 1; ///< Whether to swap the selection handle images. @@ -1406,6 +1418,14 @@ void Decorator::StopCursorBlink() { mImpl->mCursorBlinkTimer.Stop(); } + + mImpl->mCursorBlinkStatus = true; // Keep cursor permanently shown +} + +void Decorator::DelayCursorBlink() +{ + mImpl->mCursorBlinkStatus = true; // Show cursor for a bit longer + mImpl->mDelayCursorBlink = true; } void Decorator::SetCursorBlinkInterval( float seconds )