internal void OnMouseWheel(Control sender, Messages.MouseWheel args) { if (!CanScroll) { return; } var direction = args.Direction == Messages.MouseWheel.Directions.Down ? 1 : -1; var step = args.ScrollSteps * ScrollStep; // Don't tween if the new position is the same as the previous position var tweenTo = -Math.Min(MaxViewIndex, Math.Max(0, -CurrentViewIndex + direction * step)); if (tweenTo == CurrentViewIndex) { return; } if (CurrentTween != null) { CurrentTween.Cancel(); } CurrentTween = Tweener.Tween(this, new { CurrentViewIndex = -Math.Min(MaxViewIndex, Math.Max(0, -CurrentViewIndex + direction * step)) }, 0.5f); CurrentTween.Ease(Ease.CircOut); CurrentTween.OnBegin(delegate { Tweening = true; }); CurrentTween.OnComplete(delegate { Tweening = false; }); }
internal virtual bool CallMouseWheel(Messages.MouseWheel args) { if (IsVisible) { if (OnMouseWheel != null) { OnMouseWheel(this, args); } return(true); } return(false); }