*/
struct InternalPrePositionConstraint
{
- InternalPrePositionConstraint(const Vector2& initialPanMask,
+ InternalPrePositionConstraint(const Vector2& initialPanPosition,
+ const Vector2& initialPanMask,
bool axisAutoLock,
float axisAutoLockGradient,
ScrollView::LockAxis initialLockAxis,
const Vector2& maxOvershoot,
const RulerDomain& domainX, const RulerDomain& domainY)
- : mInitialPanMask(initialPanMask),
+ : mLocalStart(initialPanPosition),
+ mInitialPanMask(initialPanMask),
mDomainMin( -domainX.min, -domainY.min ),
mDomainMax( -domainX.max, -domainY.max ),
mMaxOvershoot(maxOvershoot),
Vector3 operator()(const Vector3& current,
const PropertyInput& gesturePositionProperty,
- const PropertyInput& gestureDisplacementProperty,
const PropertyInput& sizeProperty)
{
Vector3 scrollPostPosition = current;
if(!mWasPanning)
{
- mLocalStart = gesturePositionProperty.GetVector2() - gestureDisplacementProperty.GetVector2();
mPrePosition = current;
mCurrentPanMask = mInitialPanMask;
mWasPanning = true;
case Gesture::Started:
{
DALI_LOG_SCROLL_STATE("[0x%X] Pan Started", this);
+ mPanStartPosition = gesture.position - gesture.displacement;
UpdateLocalScrollProperties();
GestureStarted();
mPanning = true;
{
constraint = Constraint::New<Vector3>( mPropertyPrePosition,
Source( detector, PanGestureDetector::LOCAL_POSITION ),
- Source( detector, PanGestureDetector::LOCAL_DISPLACEMENT ),
Source( self, Actor::SIZE ),
- InternalPrePositionConstraint( initialPanMask, mAxisAutoLock, mAxisAutoLockGradient, mLockAxis, mMaxOvershoot, mRulerX->GetDomain(), mRulerY->GetDomain() ) );
+ InternalPrePositionConstraint( mPanStartPosition, initialPanMask, mAxisAutoLock, mAxisAutoLockGradient, mLockAxis, mMaxOvershoot, mRulerX->GetDomain(), mRulerY->GetDomain() ) );
mScrollMainInternalPrePositionConstraint = self.ApplyConstraint( constraint );
}
// User definable constraints to apply to all child actors //////////////////
Actor self = Self();
- // LocalSource - The Actors to be moved.
- // self - The ScrollView
-
- // Apply some default constraints to ScrollView.
+ // Apply some default constraints to ScrollView & its bound actors
// Movement + Wrap function
- // TODO: Look into removing some of these constraints
Constraint constraint;
- // MoveScaledActor (scrolling/zooming)
+ // MoveActor (scrolling)
constraint = Constraint::New<Vector3>( Actor::POSITION,
Source( self, mPropertyPosition ),
- Source( self, mPropertyScale ),
- MoveScaledActorConstraint );
- constraint.SetRemoveAction(Constraint::Discard);
- ApplyConstraintToBoundActors(constraint);
-
- // ScaleActor (scrolling/zooming)
- constraint = Constraint::New<Vector3>( Actor::SCALE,
- Source( self, mPropertyScale ),
- ScaleActorConstraint );
+ MoveActorConstraint );
constraint.SetRemoveAction(Constraint::Discard);
ApplyConstraintToBoundActors(constraint);