[Tizen](ATSPI) squashed implementation
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / scroll-bar / scroll-bar-impl.cpp
index 83cd71e..befb423 100644 (file)
@@ -204,9 +204,9 @@ ScrollBar::ScrollBar(Toolkit::ScrollBar::Direction direction)
   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 ) );
   } );
 }
 
@@ -864,35 +864,46 @@ Toolkit::ScrollBar ScrollBar::New(Toolkit::ScrollBar::Direction direction)
 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