+ void OnPanEvent( const Event& event, const Vector2& controlSize )
+ {
+ int state = event.p1.mInt;
+
+ if( Gesture::Started == state ||
+ Gesture::Continuing == state )
+ {
+ const Vector2& actualSize = mVisualModel->GetActualSize();
+
+ if( mHorizontalScrollingEnabled )
+ {
+ float displacementX = event.p2.mFloat;
+ mScrollPosition.x += displacementX;
+
+ // Clamp between -space & 0
+ float contentWidth = actualSize.width;
+ float space = (contentWidth > controlSize.width) ? contentWidth - controlSize.width : 0.0f;
+ mScrollPosition.x = ( mScrollPosition.x < -space ) ? -space : mScrollPosition.x;
+ mScrollPosition.x = ( mScrollPosition.x > 0 ) ? 0 : mScrollPosition.x;
+
+ mDecoratorUpdated = true;
+ }
+ if( mVerticalScrollingEnabled )
+ {
+ float displacementY = event.p3.mFloat;
+ mScrollPosition.y += displacementY;
+
+ // Clamp between -space & 0
+ float space = (actualSize.height > controlSize.height) ? actualSize.height - controlSize.height : 0.0f;
+ mScrollPosition.y = ( mScrollPosition.y < -space ) ? -space : mScrollPosition.y;
+ mScrollPosition.y = ( mScrollPosition.y > 0 ) ? 0 : mScrollPosition.y;
+
+ mDecoratorUpdated = true;
+ }
+ }
+ }
+