[NUI] Update sliding events on Track touch event (#4275)
authorSeoyeon2Kim <34738918+Seoyeon2Kim@users.noreply.github.com>
Mon, 30 May 2022 10:02:47 +0000 (19:02 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Thu, 2 Jun 2022 09:14:59 +0000 (18:14 +0900)
- Cannot get SlidingStarted event when the user touches the track.
 Just got ValueChanged and SlidingFinished events without started one.

- Add to emit SlidingStarted event in touch down state.
  Move SlidingFinished event to touch up state.

- Set `GrabTouchAfterLeave` as `true` to get Up event rather than Interrupted
  even if it is out of the slider area.

Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
src/Tizen.NUI.Components/Controls/Slider.Internal.cs
src/Tizen.NUI.Components/Controls/Slider.cs

index f6a20ac..ae76485 100755 (executable)
@@ -103,6 +103,7 @@ namespace Tizen.NUI.Components
             LayoutDirectionChanged += OnLayoutDirectionChanged;
 
             this.TouchEvent += OnTouchEventForTrack;
+            this.GrabTouchAfterLeave = true;
 
             panGestureDetector = new PanGestureDetector();
             panGestureDetector.Attach(this);
@@ -232,6 +233,7 @@ namespace Tizen.NUI.Components
                     ParentOrigin = Tizen.NUI.ParentOrigin.Center,
                     PivotPoint = Tizen.NUI.PivotPoint.Center,
                     PositionUsesPivotPoint = true,
+                    GrabTouchAfterLeave = true,
                     AccessibilityHidden = true,
                 };
                 this.Add(bgTrackImage);
@@ -266,6 +268,7 @@ namespace Tizen.NUI.Components
                     PivotPoint = NUI.PivotPoint.Center,
                     PositionUsesPivotPoint = true,
                     EnableControlState = true,
+                    GrabTouchAfterLeave = true,
                     AccessibilityHidden = true,
                 };
                 if (bgTrackImage != null)
@@ -360,6 +363,7 @@ namespace Tizen.NUI.Components
                 {
                     CalculateCurrentValueByGesture(-e.PanGesture.Displacement.Y);
                 }
+                UpdateState(isFocused, true);
                 UpdateValue();
             }
 
index cafe78f..8cf69dc 100755 (executable)
@@ -1769,16 +1769,15 @@ namespace Tizen.NUI.Components
                     valueIndicatorImage.Show();
                 }
 
+                UpdateState(isFocused, true);
+
+                sliderSlidingStartedHandler?.Invoke(this, new SliderSlidingStartedEventArgs {
+                    CurrentValue = curValue
+                    });
+
                 Vector2 pos = e.Touch.GetLocalPosition(0);
                 CalculateCurrentValueByTouch(pos);
                 UpdateValue();
-
-                if (null != sliderSlidingFinishedHandler)
-                {
-                    SliderSlidingFinishedEventArgs args = new SliderSlidingFinishedEventArgs();
-                    args.CurrentValue = curValue;
-                    sliderSlidingFinishedHandler(this, args);
-                }
             }
             else if (state == PointStateType.Up)
             {
@@ -1786,6 +1785,12 @@ namespace Tizen.NUI.Components
                 {
                     valueIndicatorImage.Hide();
                 }
+
+                UpdateState(isFocused, false);
+
+                sliderSlidingFinishedHandler?.Invoke(this, new SliderSlidingFinishedEventArgs {
+                    CurrentValue = curValue
+                    });
             }
             return false;
         }