}
}
+bool Controller::Impl::IsScrollable(const Vector2& displacement)
+{
+ bool isScrollable = false;
+ if(mEventData)
+ {
+ const bool isHorizontalScrollEnabled = mEventData->mDecorator->IsHorizontalScrollEnabled();
+ const bool isVerticalScrollEnabled = mEventData->mDecorator->IsVerticalScrollEnabled();
+ if(isHorizontalScrollEnabled ||isVerticalScrollEnabled)
+ {
+ const Vector2& targetSize = mModel->mVisualModel->mControlSize;
+ const Vector2& layoutSize = mModel->mVisualModel->GetLayoutSize();
+ const Vector2& scrollPosition = mModel->mScrollPosition;
+
+ if(isHorizontalScrollEnabled)
+ {
+ const float displacementX = displacement.x;
+ const float positionX = scrollPosition.x + displacementX;
+ if(layoutSize.width > targetSize.width && -positionX > 0.f && -positionX < layoutSize.width - targetSize.width)
+ {
+ isScrollable = true;
+ }
+ }
+
+ if(isVerticalScrollEnabled)
+ {
+ const float displacementY = displacement.y;
+ const float positionY = scrollPosition.y + displacementY;
+ if(layoutSize.height > targetSize.height && -positionY > 0 && -positionY < layoutSize.height - targetSize.height)
+ {
+ isScrollable = true;
+ }
+ }
+ }
+ }
+ return isScrollable;
+}
+
float Controller::Impl::GetHorizontalScrollPosition()
{
// Scroll values are negative internally so we convert them to positive numbers