Allows TextField and TextEditor to propagate PanGestures.
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / text-controller-impl.cpp
index 47877c4..7fac661 100644 (file)
@@ -1581,6 +1581,43 @@ void Controller::Impl::ScrollBy(Vector2 scroll)
   }
 }
 
+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