mIsPanning(false),
mIndicatorFirstShow(true)
{
- SetAccessibilityConstructor( []( Dali::Actor actor ) {
+ DevelControl::SetAccessibilityConstructor( Self(), []( Dali::Actor actor ) {
return std::unique_ptr< Dali::Accessibility::Accessible >(
- new AccessibleImpl( actor, Dali::Accessibility::Role::ScrollBar ) );
+ new AccessibleImpl( actor, Dali::Accessibility::Role::SCROLL_BAR ) );
} );
}
double ScrollBar::AccessibleImpl::GetMinimum()
{
auto p = Toolkit::ScrollBar::DownCast( self );
- return p.GetProperty( GetImpl( p ).mPropertyMinScrollPosition ).Get< float >();
+ Handle scrollableHandle = GetImpl( p ).mScrollableObject.GetBaseHandle();
+ return scrollableHandle ? scrollableHandle.GetCurrentProperty< float >( GetImpl( p ).mPropertyMinScrollPosition ) : 0.0f;
}
double ScrollBar::AccessibleImpl::GetCurrent()
{
auto p = Toolkit::ScrollBar::DownCast( self );
- if( GetImpl( p ).mPropertyScrollPosition == Property::INVALID_INDEX )
- throw Dali::Accessibility::AccessibleError(
- "Scroll position is INVALID_INDEX" );
- return p.GetProperty( GetImpl( p ).mPropertyScrollPosition ).Get< float >();
+ Handle scrollableHandle = GetImpl( p ).mScrollableObject.GetBaseHandle();
+ return scrollableHandle ? scrollableHandle.GetCurrentProperty< float >( GetImpl( p ).mPropertyScrollPosition ) : 0.0f;
}
double ScrollBar::AccessibleImpl::GetMaximum()
{
auto p = Toolkit::ScrollBar::DownCast( self );
- return p.GetProperty( GetImpl( p ).mPropertyMaxScrollPosition ).Get< float >();
+ Handle scrollableHandle = GetImpl( p ).mScrollableObject.GetBaseHandle();
+ return scrollableHandle ? scrollableHandle.GetCurrentProperty< float >( GetImpl( p ).mPropertyMaxScrollPosition ) : 1.0f;
}
bool ScrollBar::AccessibleImpl::SetCurrent( double current )
{
if( current < GetMinimum() || current > GetMaximum() )
return false;
+
+ auto value_before = GetCurrent();
+
auto p = Toolkit::ScrollBar::DownCast( self );
- p.SetProperty( GetImpl( p ).mPropertyScrollPosition,
- static_cast< float >( current ) );
+ Handle scrollableHandle = GetImpl( p ).mScrollableObject.GetBaseHandle();
+ if( !scrollableHandle )
+ return false;
+ scrollableHandle.SetProperty( GetImpl( p ).mPropertyScrollPosition, static_cast< float >( current ) );
+
+ auto value_after = GetCurrent();
+
+ if( ( current != value_before ) && ( value_before == value_after ) )
+ return false;
+
return true;
}
-double ScrollBar::AccessibleImpl::GetMinimumIncrement() { return 0.001; }
+double ScrollBar::AccessibleImpl::GetMinimumIncrement() { return 1.0; }
} // namespace Internal