From 9ef4d2fcec1501a588c7302ca204ed2b5debccc3 Mon Sep 17 00:00:00 2001 From: Jiyun Yang Date: Mon, 15 Mar 2021 13:51:35 +0900 Subject: [PATCH 1/1] [NUI] Scrollbar uses View instead Visual since blinking issue (#2735) Signed-off-by: Jiyun Yang --- .../Controls/ScrollableBase.cs | 39 ++- src/Tizen.NUI.Components/Controls/Scrollbar.cs | 270 ++++++++++++--------- src/Tizen.NUI.Components/Controls/ScrollbarBase.cs | 11 + .../src/public/CircularScrollbar.cs | 8 + 4 files changed, 215 insertions(+), 113 deletions(-) diff --git a/src/Tizen.NUI.Components/Controls/ScrollableBase.cs b/src/Tizen.NUI.Components/Controls/ScrollableBase.cs index 5c5c092..0abdf59 100755 --- a/src/Tizen.NUI.Components/Controls/ScrollableBase.cs +++ b/src/Tizen.NUI.Components/Controls/ScrollableBase.cs @@ -306,6 +306,7 @@ namespace Tizen.NUI.Components ContentContainer.WidthSpecification = ScrollingDirection == Direction.Vertical ? LayoutParamPolicies.MatchParent : LayoutParamPolicies.WrapContent; ContentContainer.HeightSpecification = ScrollingDirection == Direction.Vertical ? LayoutParamPolicies.WrapContent : LayoutParamPolicies.MatchParent; + SetScrollbar(); } } } @@ -773,13 +774,33 @@ namespace Tizen.NUI.Components if (isSizeChanged) { maxScrollDistance = CalculateMaximumScrollDistance(); - SetScrollbar(); + if (!ReviseContainerPositionIfNeed()) + { + UpdateScrollbar(); + } } previousContainerSize = ContentContainer.Size; previousSize = Size; } + private bool ReviseContainerPositionIfNeed() + { + bool isHorizontal = ScrollingDirection == Direction.Horizontal; + float currentPosition = isHorizontal ? ContentContainer.CurrentPosition.X : ContentContainer.CurrentPosition.Y; + + if (Math.Abs(currentPosition) > maxScrollDistance) + { + StopScroll(); + var targetPosition = BoundScrollPosition(-maxScrollDistance); + if (isHorizontal) ContentContainer.PositionX = targetPosition; + else ContentContainer.PositionY = targetPosition; + return true; + } + + return false; + } + /// /// The composition of a Scrollbar can vary depending on how you use ScrollableBase. /// Set the composition that will go into the ScrollableBase according to your ScrollableBase. @@ -794,7 +815,21 @@ namespace Tizen.NUI.Components float contentLength = isHorizontal ? ContentContainer.Size.Width : ContentContainer.Size.Height; float viewportLength = isHorizontal ? Size.Width : Size.Height; float currentPosition = isHorizontal ? ContentContainer.CurrentPosition.X : ContentContainer.CurrentPosition.Y; - Scrollbar.Initialize(contentLength, viewportLength, currentPosition, isHorizontal); + Scrollbar.Initialize(contentLength, viewportLength, -currentPosition, isHorizontal); + } + } + + /// Update scrollbar position and size. + [EditorBrowsable(EditorBrowsableState.Never)] + protected virtual void UpdateScrollbar() + { + if (Scrollbar) + { + bool isHorizontal = ScrollingDirection == Direction.Horizontal; + float contentLength = isHorizontal ? ContentContainer.Size.Width : ContentContainer.Size.Height; + float viewportLength = isHorizontal ? Size.Width : Size.Height; + float currentPosition = isHorizontal ? ContentContainer.CurrentPosition.X : ContentContainer.CurrentPosition.Y; + Scrollbar.Update(contentLength, viewportLength, -currentPosition); } } diff --git a/src/Tizen.NUI.Components/Controls/Scrollbar.cs b/src/Tizen.NUI.Components/Controls/Scrollbar.cs index 716af4b..c9bcd39 100755 --- a/src/Tizen.NUI.Components/Controls/Scrollbar.cs +++ b/src/Tizen.NUI.Components/Controls/Scrollbar.cs @@ -16,6 +16,7 @@ */ using System; using System.ComponentModel; +using System.Diagnostics; using Tizen.NUI.BaseComponents; using Tizen.NUI.Binding; @@ -107,10 +108,11 @@ namespace Tizen.NUI.Components return ((Scrollbar)bindable).scrollbarStyle.TrackPadding; }); - private ColorVisual trackVisual; - private ColorVisual thumbVisual; + private View trackView; + private View thumbView; private Animation thumbPositionAnimation; private Animation thumbSizeAnimation; + private Animation opacityAnimation; private Calculator calculator; private Size containerSize = new Size(0, 0); private ScrollbarStyle scrollbarStyle => ViewStyle as ScrollbarStyle; @@ -256,75 +258,98 @@ namespace Tizen.NUI.Components thumbSizeAnimation?.Stop(); thumbSizeAnimation = null; + opacityAnimation?.Stop(); + opacityAnimation = null; + PaddingType ensuredPadding = EnsurePadding(TrackPadding); - Size trackSize = calculator.CalculateTrackSize(TrackThickness, containerSize, ensuredPadding); - Vector2 trackPosition = calculator.CalculateTrackPosition(ensuredPadding); - Size thumbSize = calculator.CalculateThumbSize(ThumbThickness, trackSize); - Vector2 thumbPosition = calculator.CalculateThumbPosition(trackSize, thumbSize, ensuredPadding); - - trackVisual = new ColorVisual - { - SuppressUpdateVisual = true, - MixColor = TrackColor, - SizePolicy = VisualTransformPolicyType.Absolute, - Origin = calculator.CalculatorTrackAlign(), - AnchorPoint = calculator.CalculatorTrackAlign(), + var trackSize = calculator.CalculateTrackSize(TrackThickness, containerSize, ensuredPadding); + var trackPosition = calculator.CalculateTrackPosition(ensuredPadding); + var thumbSize = calculator.CalculateThumbSize(ThumbThickness, trackSize); + var thumbPosition = calculator.CalculateThumbPosition(trackSize, thumbSize, ensuredPadding); + + trackView?.Unparent(); + trackView = new View() + { + BackgroundColor = TrackColor, + ParentOrigin = calculator.CalculatorTrackAlign(), + PivotPoint = calculator.CalculatorTrackAlign(), Size = trackSize, Position = trackPosition, + PositionUsesPivotPoint = true, }; + Add(trackView); - AddVisual("Track", trackVisual); - - thumbVisual = new ColorVisual + thumbView?.Unparent(); + thumbView = new View() { - SuppressUpdateVisual = true, - MixColor = ThumbColor, - SizePolicy = VisualTransformPolicyType.Absolute, - Origin = calculator.CalculatorThumbAlign(), - AnchorPoint = calculator.CalculatorThumbAlign(), - Opacity = calculator.CalculateThumbVisibility() ? 1.0f : 0.0f, + BackgroundColor = ThumbColor, + ParentOrigin = calculator.CalculatorThumbAlign(), + PivotPoint = calculator.CalculatorThumbAlign(), Size = thumbSize, Position = thumbPosition, + PositionUsesPivotPoint = true, }; + Add(thumbView); - AddVisual("Thumb", thumbVisual); + Opacity = calculator.IsScrollable() ? 1.0f : 0.0f; } /// - /// Please note that, for now, only alpha functions created with BuiltinFunctions are valid when animating. Otherwise, it will be treated as a linear alpha function. + /// Thrown when the scrollabr not yet initialized. + [EditorBrowsable(EditorBrowsableState.Never)] + public override void Update(float contentLength, float viewportLength, float position, uint durationMs = 0, AlphaFunction alphaFunction = null) + { + if (calculator == null) + { + throw new InvalidOperationException("Scrollbar is not initialized. Please call Initialize() first."); + } + + calculator.visibleLength = viewportLength; + Update(contentLength, position, durationMs, alphaFunction); + } + + /// + /// Thrown when the scrollabr not yet initialized. [EditorBrowsable(EditorBrowsableState.Never)] public override void Update(float contentLength, float position, uint durationMs = 0, AlphaFunction alphaFunction = null) { if (calculator == null) { - return; + throw new InvalidOperationException("Scrollbar is not initialized. Please call Initialize() first."); } calculator.contentLength = contentLength > 0.0f ? contentLength : 0.0f; - previousPosition = calculator.currentPosition; calculator.currentPosition = position; - thumbVisual.Size = calculator.CalculateThumbSize(ThumbThickness, trackVisual.Size); - thumbVisual.Position = calculator.CalculateThumbScrollPosition(trackVisual.Size, thumbVisual.Position, EnsurePadding(TrackPadding)); - thumbVisual.Opacity = calculator.CalculateThumbVisibility() ? 1.0f : 0.0f; + float newOpacity = calculator.IsScrollable() ? 1.0f : 0.0f; + bool opacityChanged = (int)Opacity != (int)newOpacity; + + var thumbSize = calculator.CalculateThumbSize(ThumbThickness, trackView.Size); + var thumbPosition = calculator.CalculateThumbScrollPosition(trackView.Size, thumbView.Position, EnsurePadding(TrackPadding)); if (durationMs == 0) { - thumbVisual.UpdateVisual(true); + thumbView.Position = thumbPosition; + thumbView.Size = thumbSize; + if (opacityChanged) + { + Opacity = newOpacity; + } return; } - // TODO Support non built-in alpha function for visual trainsition in DALi. - AlphaFunction.BuiltinFunctions builtinAlphaFunction = alphaFunction?.GetBuiltinFunction() ?? AlphaFunction.BuiltinFunctions.Default; - - thumbPositionAnimation?.Stop(); - thumbPositionAnimation = AnimateVisual(thumbVisual, "position", thumbVisual.Position, 0, (int)durationMs, builtinAlphaFunction); + EnsureThumbPositionAnimation().AnimateTo(thumbView, "Position", thumbPosition, 0, (int)durationMs, alphaFunction); thumbPositionAnimation.Play(); - thumbSizeAnimation?.Stop(); - thumbSizeAnimation = AnimateVisual(thumbVisual, "size", thumbVisual.Size, 0, (int)durationMs, builtinAlphaFunction); + EnsureThumbSizeAnimation().AnimateTo(thumbView, "Size", thumbSize, 0, (int)durationMs, alphaFunction); thumbSizeAnimation.Play(); + + if (opacityChanged) + { + EnsureOpacityAnimation().AnimateTo(this, "Opacity", newOpacity, 0, (int)durationMs, alphaFunction); + opacityAnimation.Play(); + } } /// @@ -344,20 +369,15 @@ namespace Tizen.NUI.Components previousPosition = calculator.currentPosition; calculator.currentPosition = position; - thumbVisual.Position = calculator.CalculateThumbScrollPosition(trackVisual.Size, thumbVisual.Position, EnsurePadding(TrackPadding)); + var thumbPosition = calculator.CalculateThumbScrollPosition(trackView.Size, thumbView.Position, EnsurePadding(TrackPadding)); if (durationMs == 0) { - thumbVisual.UpdateVisual(true); - + thumbView.Position = thumbPosition; return; } - // TODO Support non built-in alpha function for visual trainsition in DALi. - AlphaFunction.BuiltinFunctions builtinAlphaFunction = alphaFunction?.GetBuiltinFunction() ?? AlphaFunction.BuiltinFunctions.Default; - - thumbPositionAnimation?.Stop(); - thumbPositionAnimation = AnimateVisual(thumbVisual, "position", thumbVisual.Position, 0, (int)durationMs, builtinAlphaFunction); + EnsureThumbPositionAnimation().AnimateTo(thumbView, "position", thumbPosition, 0, (int)durationMs, alphaFunction); thumbPositionAnimation.Play(); } @@ -380,13 +400,10 @@ namespace Tizen.NUI.Components } PaddingType ensuredPadding = EnsurePadding(TrackPadding); - trackVisual.Size = calculator.CalculateTrackSize(TrackThickness, containerSize, ensuredPadding); - trackVisual.Position = calculator.CalculateTrackPosition(ensuredPadding); - thumbVisual.Size = calculator.CalculateThumbSize(ThumbThickness, trackVisual.Size); - thumbVisual.Position = calculator.CalculateThumbPosition(trackVisual.Size, thumbVisual.Size, ensuredPadding); - - trackVisual.UpdateVisual(true); - thumbVisual.UpdateVisual(true); + trackView.Size = calculator.CalculateTrackSize(TrackThickness, containerSize, ensuredPadding); + trackView.Position = calculator.CalculateTrackPosition(ensuredPadding); + thumbView.Size = calculator.CalculateThumbSize(ThumbThickness, trackView.Size); + thumbView.Position = calculator.CalculateThumbPosition(trackView.Size, thumbView.Size, ensuredPadding); } /// @@ -422,13 +439,12 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] protected virtual void UpdateTrackThickness(float thickness) { - if (trackVisual == null) + if (trackView == null) { return; } - trackVisual.Size = calculator.CalculateTrackSize(thickness, containerSize, EnsurePadding(TrackPadding)); - trackVisual.UpdateVisual(true); + trackView.Size = calculator.CalculateTrackSize(thickness, containerSize, EnsurePadding(TrackPadding)); } /// @@ -438,13 +454,12 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] protected virtual void UpdateThumbThickness(float thickness) { - if (thumbVisual == null) + if (thumbView == null) { return; } - thumbVisual.Size = calculator.CalculateThumbSize(thickness, trackVisual.Size); - thumbVisual.UpdateVisual(true); + thumbView.Size = calculator.CalculateThumbSize(thickness, trackView.Size); } /// @@ -454,13 +469,12 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] protected virtual void UpdateTrackColor(Color color) { - if (trackVisual == null) + if (trackView == null) { return; } - trackVisual.MixColor = color; - trackVisual.UpdateVisual(true); + trackView.BackgroundColor = color; } /// @@ -470,13 +484,12 @@ namespace Tizen.NUI.Components [EditorBrowsable(EditorBrowsableState.Never)] protected virtual void UpdateThumbColor(Color color) { - if (thumbVisual == null) + if (thumbView == null) { return; } - thumbVisual.MixColor = color; - thumbVisual.UpdateVisual(true); + thumbView.BackgroundColor = color; } /// @@ -485,19 +498,16 @@ namespace Tizen.NUI.Components /// The padding of the track. protected virtual void UpdateTrackPadding(Extents trackPadding) { - if (calculator == null || trackVisual == null || thumbVisual == null) + if (calculator == null || trackView == null || thumbView == null) { return; } PaddingType ensuredPadding = EnsurePadding(trackPadding); - trackVisual.Size = calculator.CalculateTrackSize(TrackThickness, containerSize, ensuredPadding); - trackVisual.Position = calculator.CalculateTrackPosition(ensuredPadding); - thumbVisual.Size = calculator.CalculateThumbSize(ThumbThickness, trackVisual.Size); - thumbVisual.Position = calculator.CalculateThumbPaddingPosition(trackVisual.Size, thumbVisual.Size, thumbVisual.Position, ensuredPadding); - - trackVisual.UpdateVisual(true); - thumbVisual.UpdateVisual(true); + trackView.Size = calculator.CalculateTrackSize(TrackThickness, containerSize, ensuredPadding); + trackView.Position = calculator.CalculateTrackPosition(ensuredPadding); + thumbView.Size = calculator.CalculateThumbSize(ThumbThickness, trackView.Size); + thumbView.Position = calculator.CalculateThumbPaddingPosition(trackView.Size, thumbView.Size, thumbView.Position, ensuredPadding); } /// @@ -575,6 +585,48 @@ namespace Tizen.NUI.Components private PaddingType EnsurePadding(Extents padding) => padding == null ? new PaddingType(0, 0, 0 ,0) : new PaddingType(padding.Start, padding.End, padding.Top, padding.Bottom); + private Animation EnsureThumbPositionAnimation() + { + if (thumbPositionAnimation == null) + { + thumbPositionAnimation = new Animation(); + } + else + { + thumbPositionAnimation.Stop(); + thumbPositionAnimation.Clear(); + } + return thumbPositionAnimation; + } + + private Animation EnsureThumbSizeAnimation() + { + if (thumbSizeAnimation == null) + { + thumbSizeAnimation = new Animation(); + } + else + { + thumbSizeAnimation.Stop(); + thumbSizeAnimation.Clear(); + } + return thumbSizeAnimation; + } + + private Animation EnsureOpacityAnimation() + { + if (opacityAnimation == null) + { + opacityAnimation = new Animation(); + } + else + { + opacityAnimation.Stop(); + opacityAnimation.Clear(); + } + return opacityAnimation; + } + #endregion Methods @@ -593,19 +645,19 @@ namespace Tizen.NUI.Components this.currentPosition = currentPosition; } - public bool CalculateThumbVisibility() + public bool IsScrollable() { return contentLength > visibleLength; } - public abstract Visual.AlignType CalculatorTrackAlign(); - public abstract Visual.AlignType CalculatorThumbAlign(); + public abstract Position CalculatorTrackAlign(); + public abstract Position CalculatorThumbAlign(); public abstract Size CalculateTrackSize(float thickness, Size containerSize, PaddingType trackPadding); - public abstract Vector2 CalculateTrackPosition(PaddingType trackPadding); + public abstract Position CalculateTrackPosition(PaddingType trackPadding); public abstract Size CalculateThumbSize(float thickness, Size trackSize); - public abstract Vector2 CalculateThumbPosition(Size trackSize, Size thumbSize, PaddingType trackPadding); - public abstract Vector2 CalculateThumbPaddingPosition(Size trackSize, Size thumbSize, Vector2 thumbCurrentPosition, PaddingType trackPadding); - public abstract Vector2 CalculateThumbScrollPosition(Size trackSize, Vector2 thumbCurrentPosition, PaddingType trackPadding); + public abstract Position CalculateThumbPosition(Size trackSize, Size thumbSize, PaddingType trackPadding); + public abstract Position CalculateThumbPaddingPosition(Size trackSize, Size thumbSize, Position thumbCurrentPosition, PaddingType trackPadding); + public abstract Position CalculateThumbScrollPosition(Size trackSize, Position thumbCurrentPosition, PaddingType trackPadding); } private class HorizontalCalculator : Calculator @@ -614,14 +666,14 @@ namespace Tizen.NUI.Components { } - public override Visual.AlignType CalculatorTrackAlign() + public override Position CalculatorTrackAlign() { - return Visual.AlignType.BottomBegin; + return Tizen.NUI.ParentOrigin.BottomLeft; } - public override Visual.AlignType CalculatorThumbAlign() + public override Position CalculatorThumbAlign() { - return Visual.AlignType.BottomBegin; + return Tizen.NUI.ParentOrigin.BottomLeft; } public override Size CalculateTrackSize(float thickness, Size containerSize, PaddingType trackPadding) @@ -629,33 +681,31 @@ namespace Tizen.NUI.Components return new Size(containerSize.Width - trackPadding.Item1 - trackPadding.Item2, thickness); } - public override Vector2 CalculateTrackPosition(PaddingType trackPadding) + public override Position CalculateTrackPosition(PaddingType trackPadding) { - return new Vector2(trackPadding.Item1, -trackPadding.Item4); + return new Position(trackPadding.Item1, -trackPadding.Item4); } public override Size CalculateThumbSize(float thickness, Size trackSize) { - return new Size(trackSize.Width * visibleLength / contentLength, thickness); + return new Size(trackSize.Width * (IsScrollable() ? (visibleLength / contentLength) : 0.0f), thickness); } - public override Vector2 CalculateThumbPosition(Size trackSize, Size thumbSize, PaddingType trackPadding) + public override Position CalculateThumbPosition(Size trackSize, Size thumbSize, PaddingType trackPadding) { float padding = ((trackSize.Height - thumbSize.Height) / 2.0f) + trackPadding.Item4; - float pos = Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength); - return new Vector2(trackPadding.Item1 + trackSize.Width * pos / contentLength, -padding); + return new Position(trackPadding.Item1 + (IsScrollable() ? (trackSize.Width * (Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength)) / contentLength) : 0.0f), -padding); } - public override Vector2 CalculateThumbPaddingPosition(Size trackSize, Size thumbSize, Vector2 thumbCurrentPosition, PaddingType trackPadding) + public override Position CalculateThumbPaddingPosition(Size trackSize, Size thumbSize, Position thumbCurrentPosition, PaddingType trackPadding) { float padding = ((trackSize.Height - thumbSize.Height) / 2.0f) + trackPadding.Item4; - return new Vector2(thumbCurrentPosition.X, -padding); + return new Position(thumbCurrentPosition.X, -padding); } - public override Vector2 CalculateThumbScrollPosition(Size trackSize, Vector2 thumbCurrentPosition, PaddingType trackPadding) - { - float pos = Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength); - return new Vector2(trackPadding.Item1 + trackSize.Width * pos / contentLength, thumbCurrentPosition.Y); + public override Position CalculateThumbScrollPosition(Size trackSize, Position thumbCurrentPosition, PaddingType trackPadding) + { + return new Position(trackPadding.Item1 + (IsScrollable() ? (trackSize.Width * (Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength)) / contentLength) : 0.0f), thumbCurrentPosition.Y); } } @@ -665,14 +715,14 @@ namespace Tizen.NUI.Components { } - public override Visual.AlignType CalculatorTrackAlign() + public override Position CalculatorTrackAlign() { - return Visual.AlignType.TopEnd; + return Tizen.NUI.ParentOrigin.TopRight; } - public override Visual.AlignType CalculatorThumbAlign() + public override Position CalculatorThumbAlign() { - return Visual.AlignType.TopEnd; + return Tizen.NUI.ParentOrigin.TopRight; } public override Size CalculateTrackSize(float thickness, Size containerSize, PaddingType trackPadding) @@ -680,33 +730,31 @@ namespace Tizen.NUI.Components return new Size(thickness, containerSize.Height - trackPadding.Item3 - trackPadding.Item4); } - public override Vector2 CalculateTrackPosition(PaddingType trackPadding) + public override Position CalculateTrackPosition(PaddingType trackPadding) { - return new Vector2(-trackPadding.Item2, trackPadding.Item3); + return new Position(-trackPadding.Item2, trackPadding.Item3); } public override Size CalculateThumbSize(float thickness, Size trackSize) { - return new Size(thickness, trackSize.Height * visibleLength / contentLength); + return new Size(thickness, trackSize.Height * (IsScrollable() ? (visibleLength / contentLength) : 0.0f)); } - public override Vector2 CalculateThumbPosition(Size trackSize, Size thumbSize, PaddingType trackPadding) + public override Position CalculateThumbPosition(Size trackSize, Size thumbSize, PaddingType trackPadding) { float padding = ((trackSize.Width - thumbSize.Width) / 2.0f) + trackPadding.Item2; - float pos = Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength); - return new Vector2(-padding, trackPadding.Item3 + trackSize.Height * pos / contentLength); + return new Position(-padding, trackPadding.Item3 + (IsScrollable() ? (trackSize.Height * Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength) / contentLength) : 0.0f)); } - public override Vector2 CalculateThumbPaddingPosition(Size trackSize, Size thumbSize, Vector2 thumbCurrentPosition, PaddingType trackPadding) + public override Position CalculateThumbPaddingPosition(Size trackSize, Size thumbSize, Position thumbCurrentPosition, PaddingType trackPadding) { float padding = ((trackSize.Width - thumbSize.Width) / 2.0f) + trackPadding.Item2; - return new Vector2(-padding, thumbCurrentPosition.Y); + return new Position(-padding, thumbCurrentPosition.Y); } - public override Vector2 CalculateThumbScrollPosition(Size trackSize, Vector2 thumbPosition, PaddingType trackPadding) + public override Position CalculateThumbScrollPosition(Size trackSize, Position thumbPosition, PaddingType trackPadding) { - float pos = Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength); - return new Vector2(thumbPosition.X, trackPadding.Item3 + trackSize.Height * pos / contentLength); + return new Position(thumbPosition.X, trackPadding.Item3 + (IsScrollable() ? (trackSize.Height * Math.Min(Math.Max(currentPosition, 0.0f), contentLength - visibleLength) / contentLength) : 0.0f)); } } diff --git a/src/Tizen.NUI.Components/Controls/ScrollbarBase.cs b/src/Tizen.NUI.Components/Controls/ScrollbarBase.cs index f7acb4d..13bb4ea 100755 --- a/src/Tizen.NUI.Components/Controls/ScrollbarBase.cs +++ b/src/Tizen.NUI.Components/Controls/ScrollbarBase.cs @@ -62,6 +62,17 @@ namespace Tizen.NUI.Components /// Update content length and position at once. /// /// The total length of the content. + /// The length of the viewport representing the amount of visible content. + /// The destination position of the View in content length. This is the View's top position if the scroller is vertical, otherwise, View's left position. + /// The time it takes to scroll in milliseconds. + /// The timing function used in animation. It describes the rate of change of the animation parameter over time. (e.g. EaseOut) + [EditorBrowsable(EditorBrowsableState.Never)] + public abstract void Update(float contentLength, float viewportLength, float position, uint durationMs = 0, AlphaFunction alphaFunction = null); + + /// + /// Update content length and position at once. + /// + /// The total length of the content. /// The destination position of the View in content length. This is the View's top position if the scroller is vertical, otherwise, View's left position. /// The time it takes to scroll in milliseconds. /// The timing function used in animation. It describes the rate of change of the animation parameter over time. (e.g. EaseOut) diff --git a/src/Tizen.NUI.Wearable/src/public/CircularScrollbar.cs b/src/Tizen.NUI.Wearable/src/public/CircularScrollbar.cs index 6bb32a1..c264523 100644 --- a/src/Tizen.NUI.Wearable/src/public/CircularScrollbar.cs +++ b/src/Tizen.NUI.Wearable/src/public/CircularScrollbar.cs @@ -284,6 +284,14 @@ namespace Tizen.NUI.Wearable /// [EditorBrowsable(EditorBrowsableState.Never)] + public override void Update(float contentLength, float viewportLength, float position, uint durationMs = 0, AlphaFunction alphaFunction = null) + { + this.visibleLength = viewportLength; + Update(contentLength, position, durationMs, alphaFunction); + } + + /// + [EditorBrowsable(EditorBrowsableState.Never)] public override void Update(float contentLength, float position, uint durationMs = 0, AlphaFunction alphaFunction = null) { this.previousPosition = this.currentPosition; -- 2.7.4