From: Junkyeong Kim Date: Fri, 28 Mar 2025 04:01:05 +0000 (+0900) Subject: [NUI] Add SetGestureGrabMode to InputGesture X-Git-Tag: submit/tizen_9.0/20250331.150952~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=92d9fb6f04c4669734240271e6bb75a44e1a918d;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] Add SetGestureGrabMode to InputGesture --- diff --git a/src/Tizen.NUI.WindowSystem/src/internal/Interop/Interop.InputGesture.cs b/src/Tizen.NUI.WindowSystem/src/internal/Interop/Interop.InputGesture.cs index f602a0088..6e673db0e 100644 --- a/src/Tizen.NUI.WindowSystem/src/internal/Interop/Interop.InputGesture.cs +++ b/src/Tizen.NUI.WindowSystem/src/internal/Interop/Interop.InputGesture.cs @@ -52,6 +52,9 @@ namespace Tizen.NUI.WindowSystem [DllImport(lib, EntryPoint = "efl_util_gesture_grab")] internal static extern ErrorCode GestureGrab(IntPtr gestureHandler, IntPtr gestureData); + [DllImport(lib, EntryPoint = "efl_util_gesture_grab_mode_set")] + internal static extern ErrorCode SetGestureGrabMode(IntPtr gestureHandler, IntPtr gestureData, int mode); + [DllImport(lib, EntryPoint = "efl_util_gesture_ungrab")] internal static extern ErrorCode GestureUngrab(IntPtr gestureHandler, IntPtr gestureData); diff --git a/src/Tizen.NUI.WindowSystem/src/public/InputGesture.cs b/src/Tizen.NUI.WindowSystem/src/public/InputGesture.cs index b78fb7a26..777250bfb 100644 --- a/src/Tizen.NUI.WindowSystem/src/public/InputGesture.cs +++ b/src/Tizen.NUI.WindowSystem/src/public/InputGesture.cs @@ -110,6 +110,29 @@ namespace Tizen.NUI.WindowSystem Partial, } + /// + /// Enumeration of gesture grab modes. + /// + /// This enum is need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + public enum GestureGrabMode + { + /// + /// mode none. + /// + None, + + /// + /// mode exclusive. + /// + Exclusive, + + /// + /// mode shared. + /// + Shared, + } + /// /// Class for the Tizen Input Gesture. /// @@ -429,6 +452,23 @@ namespace Tizen.NUI.WindowSystem Log.Debug(LogTag, "GrabGesture"); } + /// + /// Set grab mode of global gesture + /// + /// gesture data to grab + /// The mode of gesture grab + /// Thrown when failed of invalid argument. + public void SetGestureGrabMode(IntPtr data, GestureGrabMode mode) + { + if (data == IntPtr.Zero) + { + throw new ArgumentException("gesture data is not valid."); + } + Interop.InputGesture.ErrorCode res = Interop.InputGesture.SetGestureGrabMode(_handler, data, (int)mode); + ErrorCodeThrow(res); + Log.Debug(LogTag, "SetGestureGrabMode"); + } + /// /// Ungrabs a global gesture. /// diff --git a/test/Tizen.NUI.WindowSystem.InputGesture/Tizen.NUI.WindowSystem.InputGesture.cs b/test/Tizen.NUI.WindowSystem.InputGesture/Tizen.NUI.WindowSystem.InputGesture.cs index 455bd67f8..960a9734c 100644 --- a/test/Tizen.NUI.WindowSystem.InputGesture/Tizen.NUI.WindowSystem.InputGesture.cs +++ b/test/Tizen.NUI.WindowSystem.InputGesture/Tizen.NUI.WindowSystem.InputGesture.cs @@ -158,6 +158,33 @@ namespace Tizen.NUI.WindowSystem palmCoverGrabbed = false; } } + if (e.Key.State == Key.StateType.Down && (e.Key.KeyPressedName == "G" || e.Key.KeyPressedName == "g")) + { + if (edgeSwipeG == IntPtr.Zero) + edgeSwipeG = inputGesture.CreateEdgeSwipeData(1, GestureEdge.Left); + + if (edgeSwipeG == IntPtr.Zero) + { + centerLabel.Text = "'G' Key Pressed. edgeSwipeG NULL!!"; + return; + } + + if (!edgeSwipeGrabbed) + { + inputGesture.SetGestureGrabMode(edgeSwipeG, GestureGrabMode.Shared); + inputGesture.GrabGesture(edgeSwipeG); + centerLabel.Text = "'G' Key Pressed. edgeSwipe Shared Grabbed"; + + inputGesture.EdgeSwipeEventHandler += _edgeSwipeEventHandler; + edgeSwipeGrabbed = true; + } + else + { + inputGesture.UngrabGesture(edgeSwipeG); + centerLabel.Text = "'G' Key Pressed. edgeSwipe Ungrabbed"; + edgeSwipeGrabbed = false; + } + } } private bool OnTouchEvent(object sender, View.TouchEventArgs e)