From 206696d4fd84da01100fe43a9360af48c4f6101e Mon Sep 17 00:00:00 2001 From: Paul Wisbey Date: Tue, 24 Mar 2015 10:05:29 +0000 Subject: [PATCH] Fixed grab-handle area position Change-Id: I47b564fd3952ae272a6c823957a04a5ef30e8d72 --- dali-toolkit/internal/text/decorator/text-decorator.cpp | 8 ++++++-- dali-toolkit/internal/text/text-controller.cpp | 12 +++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp index 3ec0aa1..d8deaf6 100644 --- a/dali-toolkit/internal/text/decorator/text-decorator.cpp +++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp @@ -326,11 +326,15 @@ struct Decorator::Impl : public ConnectionTracker mGrabHandle.SetAnchorPoint( AnchorPoint::TOP_CENTER ); mGrabHandle.SetDrawMode( DrawMode::OVERLAY ); - mGrabArea = Actor::New(); // Area that Grab handle responds to, larger than actual handle so easier to move + // Area that Grab handle responds to, larger than actual handle so easier to move #ifdef DECORATOR_DEBUG + mGrabArea = Toolkit::CreateSolidColorActor( Vector4(1.0f, 0.0f, 0.0f, 0.5f) ); mGrabArea.SetName( "GrabArea" ); +#else + mGrabArea = Actor::New(); #endif - mGrabArea.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION ); + mGrabArea.SetParentOrigin( ParentOrigin::TOP_CENTER ); + mGrabArea.SetAnchorPoint( AnchorPoint::TOP_CENTER ); mGrabArea.SetSizeMode( SIZE_RELATIVE_TO_PARENT ); mGrabArea.SetSizeModeFactor( DEFAULT_GRAB_HANDLE_RELATIVE_SIZE ); mGrabHandle.Add(mGrabArea); diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index e3c9ca3..151539c 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -409,11 +409,11 @@ struct Controller::TextInput totalHeight += lines[lineIndex].lineSize.height; if( y < totalHeight ) { - break; + return lineIndex; } } - return lineIndex; + return lineIndex-1; } void GetClosestCursorPosition( CharacterIndex& logical, float& visualX, float& visualY, float& height ) @@ -509,7 +509,7 @@ struct Controller::TextInput float visualX( 0.0f ); float visualY( 0.0f ); - LineIndex lineIndex( 0u ); + float height( 0.0f ); const Vector& lineRuns = mVisualModel->mLines; if( cursorGlyph > 0 ) @@ -521,17 +521,19 @@ struct Controller::TextInput visualX += mVisualModel->mGlyphs[ cursorGlyph ].width; // Find the line height - for( GlyphIndex lastGlyph = 0; lineIndex < lineRuns.Count(); ++lineIndex ) + GlyphIndex lastGlyph( 0 ); + for( LineIndex lineIndex = 0u; lineIndex < lineRuns.Count(); ++lineIndex ) { lastGlyph = (lineRuns[lineIndex].glyphIndex + lineRuns[lineIndex].numberOfGlyphs); if( cursorGlyph < lastGlyph ) { + height = lineRuns[lineIndex].lineSize.height; break; } } } - mDecorator->SetPosition( PRIMARY_CURSOR, visualX, visualY, lineRuns[lineIndex].lineSize.height ); + mDecorator->SetPosition( PRIMARY_CURSOR, visualX, visualY, height ); mDecoratorUpdated = true; } -- 2.7.4