[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / scroll-bar / scroll-bar-impl.cpp
index 02ca819..fe49f3c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -363,9 +363,11 @@ void ScrollBar::OnScrollPositionIntervalReached(PropertyNotification& source)
   if(scrollableHandle)
   {
     mScrollPositionIntervalReachedSignal.Emit(scrollableHandle.GetCurrentProperty<float>(mPropertyScrollPosition));
-    if(Self() == Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor())
+
+    auto accessible = GetAccessibleObject();
+    if(DALI_LIKELY(accessible) && accessible->IsHighlighted())
     {
-      GetAccessibleObject()->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE);
+      accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE);
     }
   }
 }
@@ -703,12 +705,22 @@ void ScrollBar::SetProperty(BaseObject* object, Property::Index index, const Pro
           Dali::Vector<float> positions;
           size_t              positionCount = array->Count();
           positions.Resize(positionCount);
+
+          bool valid = true;
           for(size_t i = 0; i != positionCount; ++i)
           {
-            array->GetElementAt(i).Get(positions[i]);
+            if(DALI_UNLIKELY(!array->GetElementAt(i).Get(positions[i])))
+            {
+              // Given array is invalid. Fast out.
+              valid = false;
+              break;
+            }
           }
 
-          scrollBarImpl.SetScrollPositionIntervals(positions);
+          if(DALI_LIKELY(valid))
+          {
+            scrollBarImpl.SetScrollPositionIntervals(positions);
+          }
         }
         break;
       }
@@ -880,6 +892,11 @@ double ScrollBar::ScrollBarAccessible::GetCurrent() const
   return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(self).mPropertyScrollPosition) : 0.0f;
 }
 
+std::string ScrollBar::ScrollBarAccessible::GetValueText() const
+{
+  return {}; // Text mode is not used at the moment
+}
+
 double ScrollBar::ScrollBarAccessible::GetMaximum() const
 {
   auto   self             = Toolkit::ScrollBar::DownCast(Self());