X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-selection-toolbar-impl.cpp;h=eb6efe47ae15f30c8484f1ccc82f5d1ee378cbb2;hb=8cdf22c87a0428691dcf7df10f3020656b3a2ebf;hp=cb1e205a8da9bd6704e4723a3d72eeb621ac1370;hpb=31df2b9472ccbe0ae460a958535be8ef790c96f2;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp index cb1e205..eb6efe4 100644 --- a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp @@ -19,6 +19,7 @@ #include // INTERNAL INCLUDES +#include #include // EXTERNAL INCLUDES @@ -125,9 +126,39 @@ void TextSelectionToolbar::OnRelayout( const Vector2& size, RelayoutContainer& c mScrollView.SetRulerX( mRulerX ); } +void TextSelectionToolbar::OnStageConnection( int depth ) +{ + // Call the Control::OnStageConnection() to set the depth of the background. + Control::OnStageConnection( depth ); + + // Traverse the dividers and set the depth. + for( unsigned int i = 0; i < mDividerIndexes.Count(); ++i ) + { + Actor divider = mTableOfButtons.GetChildAt( Toolkit::TableView::CellPosition( 0, mDividerIndexes[ i ] ) ); + + ImageActor dividerImageActor = ImageActor::DownCast( divider ); + if( dividerImageActor ) + { + dividerImageActor.SetSortModifier( DECORATION_DEPTH_INDEX + depth ); + } + else + { + // TODO at the moment divider are image actors. + } + } + + // Texts are controls, they have their own OnStageConnection() implementation. + // Icons are inside a TableView. It has it's own OnStageConnection() implementation. +} + void TextSelectionToolbar::SetPopupMaxSize( const Size& maxSize ) { mMaxSize = maxSize; + if (mScrollView && mStencilLayer ) + { + mScrollView.SetMaximumSize( mMaxSize ); + mStencilLayer.SetMaximumSize( mMaxSize ); + } } const Dali::Vector2& TextSelectionToolbar::GetPopupMaxSize() const @@ -140,7 +171,6 @@ void TextSelectionToolbar::SetUpScrollView( Toolkit::ScrollView& scrollView ) scrollView.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); scrollView.SetParentOrigin( ParentOrigin::CENTER_LEFT ); scrollView.SetAnchorPoint( AnchorPoint::CENTER_LEFT ); - scrollView.SetMaximumSize( mMaxSize ); scrollView.SetScrollingDirection( PanGestureDetector::DIRECTION_HORIZONTAL, Degree( 40.0f ) ); scrollView.SetAxisAutoLock( true ); @@ -160,10 +190,9 @@ void TextSelectionToolbar::SetUp() self.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); // Create Layer and Stencil. Layer enable's clipping when content exceed maximum defined width. - Layer stencilLayer = Layer::New(); - stencilLayer.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); - stencilLayer.SetParentOrigin( ParentOrigin::CENTER ); - stencilLayer.SetMaximumSize( mMaxSize ); + mStencilLayer = Layer::New(); + mStencilLayer.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); + mStencilLayer.SetParentOrigin( ParentOrigin::CENTER ); ImageActor stencil = CreateSolidColorActor( Color::RED ); stencil.SetDrawMode( DrawMode::STENCIL ); @@ -181,12 +210,10 @@ void TextSelectionToolbar::SetUp() mTableOfButtons.SetAnchorPoint( AnchorPoint::CENTER_LEFT ); - stencilLayer.Add( stencil ); - stencilLayer.Add( mScrollView ); + mStencilLayer.Add( stencil ); + mStencilLayer.Add( mScrollView ); mScrollView.Add( mTableOfButtons ); - self.Add( stencilLayer ); - - stencilLayer.RaiseToTop(); + self.Add( mStencilLayer ); } void TextSelectionToolbar::OnScrollStarted( const Vector2& position ) @@ -209,7 +236,7 @@ void TextSelectionToolbar::AddOption( Actor& option ) void TextSelectionToolbar::AddDivider( Actor& divider ) { AddOption( divider ); - mDividerIndexes.PushBack( mIndexInTable ); + mDividerIndexes.PushBack( mIndexInTable - 1u ); } void TextSelectionToolbar::ResizeDividers( Size& size ) @@ -222,9 +249,14 @@ void TextSelectionToolbar::ResizeDividers( Size& size ) RelayoutRequest(); } +void TextSelectionToolbar::RaiseAbove( Layer target ) +{ + mStencilLayer.RaiseAbove( target ); +} + TextSelectionToolbar::TextSelectionToolbar() -: Control( ControlBehaviour( ControlBehaviour( ACTOR_BEHAVIOUR_NONE ) ) ), - mMaxSize ( DEFAULT_MAX_SIZE ), +: Control( ControlBehaviour( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ) ), + mMaxSize (), mIndexInTable( 0 ), mDividerIndexes() { @@ -235,7 +267,6 @@ TextSelectionToolbar::~TextSelectionToolbar() mRulerX.Reset(); } - } // namespace Internal } // namespace Toolkit