/*
- * Copyright (c) 2021 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.
#include <dali/integration-api/debug.h>
#include <dali/public-api/animation/constraint.h>
#include <dali/public-api/animation/constraints.h>
+#include <dali/public-api/math/math-utils.h>
#include <dali/public-api/object/property-array.h>
#include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/object/type-registry.h>
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);
}
}
}
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;
}
double ScrollBar::ScrollBarAccessible::GetMinimum() const
{
- auto self = Toolkit::ScrollBar::DownCast(Self());
+ auto self = Toolkit::ScrollBar::DownCast(Self());
Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(self).mPropertyMinScrollPosition) : 0.0f;
}
double ScrollBar::ScrollBarAccessible::GetCurrent() const
{
- auto self = Toolkit::ScrollBar::DownCast(Self());
+ auto self = Toolkit::ScrollBar::DownCast(Self());
Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
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());
+ auto self = Toolkit::ScrollBar::DownCast(Self());
Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
return scrollableHandle ? scrollableHandle.GetCurrentProperty<float>(GetImpl(self).mPropertyMaxScrollPosition) : 1.0f;
}
auto valueBefore = GetCurrent();
- auto self = Toolkit::ScrollBar::DownCast(Self());
+ auto self = Toolkit::ScrollBar::DownCast(Self());
Handle scrollableHandle = GetImpl(self).mScrollableObject.GetHandle();
if(!scrollableHandle)
{
auto valueAfter = GetCurrent();
- if((current != valueBefore) && (valueBefore == valueAfter))
+ if(!Dali::Equals(current, valueBefore) && Dali::Equals(valueBefore, valueAfter))
{
return false;
}