CursorImpl()
: x(0.0f),
y(0.0f),
- height(0.0f),
+ cursorHeight(0.0f),
+ lineHeight(0.0f),
color(Dali::Color::WHITE)
{
}
float x;
float y;
- float height;
+ float cursorHeight;
+ float lineHeight;
Vector4 color;
};
SelectionHandleImpl()
: x(0.0f),
y(0.0f),
- cursorHeight(0.0f),
+ lineHeight(0.0f),
flipped(false)
{
}
float x;
float y;
- float cursorHeight; ///< Not the handle height
+ float lineHeight; ///< Not the handle height
bool flipped;
ImageActor actor;
{
mPrimaryCursor.SetPosition( mCursor[PRIMARY_CURSOR].x + scrollPosition.x,
mCursor[PRIMARY_CURSOR].y + scrollPosition.y );
- mPrimaryCursor.SetSize( 1.0f, mCursor[PRIMARY_CURSOR].height );
+ mPrimaryCursor.SetSize( Size( 1.0f, mCursor[PRIMARY_CURSOR].cursorHeight ) );
}
if( mSecondaryCursor )
{
mSecondaryCursor.SetPosition( mCursor[SECONDARY_CURSOR].x + scrollPosition.x,
mCursor[SECONDARY_CURSOR].y + scrollPosition.y );
- mSecondaryCursor.SetSize( 1.0f, mCursor[SECONDARY_CURSOR].height );
+ mSecondaryCursor.SetSize( Size( 1.0f, mCursor[SECONDARY_CURSOR].cursorHeight ) );
}
// Show or hide the grab handle
CreateGrabHandle();
mGrabHandle.SetPosition( mCursor[PRIMARY_CURSOR].x + scrollPosition.x,
- mCursor[PRIMARY_CURSOR].y + scrollPosition.y + mCursor[PRIMARY_CURSOR].height );
+ mCursor[PRIMARY_CURSOR].lineHeight + scrollPosition.y );
}
else if( mGrabHandle )
{
SelectionHandleImpl& primary = mSelectionHandle[ PRIMARY_SELECTION_HANDLE ];
primary.actor.SetPosition( primary.x + scrollPosition.x,
- primary.y + scrollPosition.y + primary.cursorHeight );
+ primary.lineHeight + scrollPosition.y );
SelectionHandleImpl& secondary = mSelectionHandle[ SECONDARY_SELECTION_HANDLE ];
secondary.actor.SetPosition( secondary.x + scrollPosition.x,
- secondary.y + scrollPosition.y + secondary.cursorHeight );
+ secondary.lineHeight + scrollPosition.y );
CreateHighlight();
UpdateHighlight();
void CreateCursor( ImageActor& cursor )
{
cursor = CreateSolidColorActor( Color::WHITE );
- cursor.SetParentOrigin( ParentOrigin::TOP_LEFT );
+ cursor.SetParentOrigin( ParentOrigin::TOP_LEFT ); // Need to set the default parent origin as CreateSolidColorActor() sets a different one.
cursor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+ cursor.SetRelayoutEnabled( false );
}
// Add or Remove cursor(s) from parent
mActiveLayer.Add( mSecondaryCursor);
}
}
+ else
+ {
+ UnparentAndReset( mSecondaryCursor );
+ }
}
}
mActiveLayer.SetName ( "ActiveLayerActor" );
#endif
- mActiveLayer.SetAnchorPoint( AnchorPoint::CENTER);
- mActiveLayer.SetParentOrigin( ParentOrigin::CENTER);
- //mActiveLayer.SetSizeMode( SIZE_EQUAL_TO_PARENT ); FIXME
+ mActiveLayer.SetParentOrigin( ParentOrigin::CENTER );
+ mActiveLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
mActiveLayer.SetPositionInheritanceMode( USE_PARENT_POSITION );
parent.Add( mActiveLayer );
#ifdef DECORATOR_DEBUG
mGrabHandle.SetName( "GrabHandleActor" );
#endif
- mGrabHandle.SetParentOrigin( ParentOrigin::TOP_LEFT );
mGrabHandle.SetAnchorPoint( AnchorPoint::TOP_CENTER );
mGrabHandle.SetDrawMode( DrawMode::OVERLAY );
-
// 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" );
+ mGrabArea = Toolkit::CreateSolidColorActor( Vector4(0.0f, 0.0f, 0.0f, 0.0f), true, Color::RED, 1 );
+ mGrabArea.SetName( "GrabArea" );
#else
mGrabArea = Actor::New();
+ mGrabArea.SetRelayoutEnabled( true );
#endif
mGrabArea.SetParentOrigin( ParentOrigin::TOP_CENTER );
mGrabArea.SetAnchorPoint( AnchorPoint::TOP_CENTER );
- mGrabArea.SetSizeMode( SIZE_RELATIVE_TO_PARENT );
+ mGrabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
mGrabArea.SetSizeModeFactor( DEFAULT_GRAB_HANDLE_RELATIVE_SIZE );
- mGrabHandle.Add(mGrabArea);
+ mGrabHandle.Add( mGrabArea );
mTapDetector.Attach( mGrabArea );
mPanGestureDetector.Attach( mGrabArea );
#ifdef DECORATOR_DEBUG
primary.actor.SetName("SelectionHandleOne");
#endif
- primary.actor.SetParentOrigin( ParentOrigin::TOP_LEFT );
primary.actor.SetAnchorPoint( AnchorPoint::TOP_RIGHT ); // Change to BOTTOM_RIGHT if Look'n'Feel requires handle above text.
primary.actor.SetDrawMode( DrawMode::OVERLAY ); // ensure grab handle above text
primary.flipped = false;
primary.grabArea = Actor::New(); // Area that Grab handle responds to, larger than actual handle so easier to move
+ primary.grabArea.SetRelayoutEnabled( true );
#ifdef DECORATOR_DEBUG
primary.grabArea.SetName("SelectionHandleOneGrabArea");
#endif
- primary.grabArea.SetSizeMode( SIZE_RELATIVE_TO_PARENT );
+ primary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
primary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
primary.grabArea.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION );
#ifdef DECORATOR_DEBUG
secondary.actor.SetName("SelectionHandleTwo");
#endif
- secondary.actor.SetParentOrigin( ParentOrigin::TOP_LEFT );
secondary.actor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // Change to BOTTOM_LEFT if Look'n'Feel requires handle above text.
secondary.actor.SetDrawMode( DrawMode::OVERLAY ); // ensure grab handle above text
secondary.flipped = false;
secondary.grabArea = Actor::New(); // Area that Grab handle responds to, larger than actual handle so easier to move
+ secondary.grabArea.SetRelayoutEnabled( true );
#ifdef DECORATOR_DEBUG
secondary.grabArea.SetName("SelectionHandleTwoGrabArea");
#endif
- secondary.grabArea.SetSizeMode( SIZE_RELATIVE_TO_PARENT );
+ secondary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
secondary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
secondary.grabArea.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION );
#ifdef DECORATOR_DEBUG
mHighlightMeshActor.SetName( "HighlightMeshActor" );
#endif
- mHighlightMeshActor.SetParentOrigin( ParentOrigin::TOP_LEFT );
mHighlightMeshActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
mHighlightMeshActor.SetPosition( 0.0f, 0.0f, DISPLAYED_HIGHLIGHT_Z_OFFSET );
mGrabDisplacementY += gesture.displacement.y;
float x = mCursor[PRIMARY_CURSOR].x + mGrabDisplacementX;
- float y = mCursor[PRIMARY_CURSOR].y + mCursor[PRIMARY_CURSOR].height*0.5f + mGrabDisplacementY;
+ float y = mCursor[PRIMARY_CURSOR].y + mCursor[PRIMARY_CURSOR].lineHeight*0.5f + mGrabDisplacementY;
if( Gesture::Started == gesture.state ||
Gesture::Continuing == gesture.state )
return mImpl->mActiveCursor;
}
-void Decorator::SetPosition( Cursor cursor, float x, float y, float height )
+void Decorator::SetPosition( Cursor cursor, float x, float y, float cursorHeight, float lineHeight )
{
// Adjust grab handle displacement
mImpl->mGrabDisplacementX -= x - mImpl->mCursor[cursor].x;
mImpl->mCursor[cursor].x = x;
mImpl->mCursor[cursor].y = y;
- mImpl->mCursor[cursor].height = height;
+ mImpl->mCursor[cursor].cursorHeight = cursorHeight;
+ mImpl->mCursor[cursor].lineHeight = lineHeight;
}
-void Decorator::GetPosition( Cursor cursor, float& x, float& y, float& height ) const
+void Decorator::GetPosition( Cursor cursor, float& x, float& y, float& cursorHeight, float& lineHeight ) const
{
x = mImpl->mCursor[cursor].x;
y = mImpl->mCursor[cursor].y;
- height = mImpl->mCursor[cursor].height;
+ cursorHeight = mImpl->mCursor[cursor].cursorHeight;
+ lineHeight = mImpl->mCursor[cursor].lineHeight;
}
void Decorator::SetColor( Cursor cursor, const Dali::Vector4& color )
{
mImpl->mSelectionHandle[handle].x = x;
mImpl->mSelectionHandle[handle].y = y;
- mImpl->mSelectionHandle[handle].cursorHeight = height;
+ mImpl->mSelectionHandle[handle].lineHeight = height;
}
void Decorator::GetPosition( SelectionHandle handle, float& x, float& y, float& height ) const
{
x = mImpl->mSelectionHandle[handle].x;
y = mImpl->mSelectionHandle[handle].y;
- height = mImpl->mSelectionHandle[handle].cursorHeight;
+ height = mImpl->mSelectionHandle[handle].lineHeight;
}
void Decorator::SetImage( SelectionHandle handle, SelectionHandleState state, Dali::Image image )