X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-selection-toolbar-impl.cpp;h=45c1a663a9f4554801344274c0482315f8e16840;hb=26efc210fc636e51a4d3df9ae7fbcc1d2a8bac40;hp=0cb62af7ae31e01559536dca1353785c3307e0bb;hpb=8e7cfd0c114bf778287cc6e67d0f42f3c866e205;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 0cb62af..45c1a66 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,8 @@ // INTERNAL INCLUDES #include #include +#include +#include namespace Dali { @@ -198,6 +200,7 @@ const Dali::Vector2& TextSelectionToolbar::GetPopupMaxSize() const void TextSelectionToolbar::SetUpScrollView() { + mScrollView.SetName("TextSelectionScrollView"); mScrollView.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); mScrollView.SetParentOrigin( ParentOrigin::CENTER_LEFT ); mScrollView.SetAnchorPoint( AnchorPoint::CENTER_LEFT ); @@ -206,6 +209,7 @@ void TextSelectionToolbar::SetUpScrollView() mScrollView.SetAxisAutoLock( true ); mScrollView.ScrollStartedSignal().Connect( this, &TextSelectionToolbar::OnScrollStarted ); mScrollView.ScrollCompletedSignal().Connect( this, &TextSelectionToolbar::OnScrollCompleted ); + mScrollView.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_TO_BOUNDING_BOX ); // In a new layer, so clip to scroll-view's bounding box mRulerX = new DefaultRuler(); // IntrusivePtr which is unreferenced when ScrollView is destroyed. @@ -278,11 +282,16 @@ void TextSelectionToolbar::SetUpScrollBar( bool enable ) void TextSelectionToolbar::OnScrollStarted( const Vector2& position ) { + if( mFirstScrollEnd ) + { + mScrollView.SetOvershootEnabled( true ); + } mTableOfButtons.SetSensitive( false ); } void TextSelectionToolbar::OnScrollCompleted( const Vector2& position ) { + mFirstScrollEnd = true; mTableOfButtons.SetSensitive( true ); } @@ -325,6 +334,13 @@ void TextSelectionToolbar::SetScrollBarPadding( const Vector2& padding ) RelayoutRequest(); } +void TextSelectionToolbar::ScrollTo( const Vector2& position ) +{ + mFirstScrollEnd = false; + mScrollView.SetOvershootEnabled( false ); + mScrollView.ScrollTo( position, 0.f ); +} + void TextSelectionToolbar::ConfigureScrollview( const Property::Map& properties ) { // Set any properties specified for the label by iterating through all property key-value pairs. @@ -336,9 +352,21 @@ void TextSelectionToolbar::ConfigureScrollview( const Property::Map& properties Property::Index setPropertyIndex = mScrollView.GetPropertyIndex( propertyPair.first ); if( setPropertyIndex != Property::INVALID_INDEX ) { - // If the conversion worked, we have a valid property index, - // Set the property to the new value. - mScrollView.SetProperty( setPropertyIndex, propertyPair.second ); + // Convert the string representation of a color into a Vector4 + if( setPropertyIndex == Toolkit::Scrollable::Property::OVERSHOOT_EFFECT_COLOR ) + { + Vector4 color; + if( ConvertPropertyToColor( propertyPair.second, color ) ) + { + mScrollView.SetOvershootEffectColor( color ); + } + } + else + { + // If the conversion worked, we have a valid property index, + // Set the property to the new value. + mScrollView.SetProperty( setPropertyIndex, propertyPair.second ); + } } } @@ -355,8 +383,15 @@ TextSelectionToolbar::TextSelectionToolbar() mMaxSize (), mScrollBarPadding( DEFAULT_SCROLL_BAR_PADDING ), mIndexInTable( 0 ), - mDividerIndexes() + mDividerIndexes(), + mFirstScrollEnd( false ) { + DevelControl::SetAccessibilityConstructor( Self(), []( Dali::Actor actor ) + { + return std::unique_ptr< Dali::Accessibility::Accessible >( + new Control::Impl::AccessibleImpl( actor, Dali::Accessibility::Role::TOOL_BAR, true ) ); + } + ); } TextSelectionToolbar::~TextSelectionToolbar()