From 415958c65520e98c5883034e065460028f5904c5 Mon Sep 17 00:00:00 2001 From: "joogab.yun" Date: Thu, 22 Aug 2024 11:16:22 +0900 Subject: [PATCH] [NUI] Add RelativeMotionGrab and RelativeMotionUnGrab --- .../src/internal/Interop/Interop.Window.cs | 8 +++ src/Tizen.NUI/src/public/Window/Window.cs | 62 +++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs b/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs index af549db0302..ffd7ce6f88f 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs @@ -384,6 +384,14 @@ internal static partial class Window [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Window_IsAlwaysOnTop")] [return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.U1)] public static extern bool IsAlwaysOnTop(global::System.Runtime.InteropServices.HandleRef window); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Window_RelativeMotionGrab")] + [return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.U1)] + public static extern bool RelativeMotionGrab(global::System.Runtime.InteropServices.HandleRef window, uint boundary); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Window_RelativeMotionUnGrab")] + [return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.U1)] + public static extern bool RelativeMotionUnGrab(global::System.Runtime.InteropServices.HandleRef window); } } } diff --git a/src/Tizen.NUI/src/public/Window/Window.cs b/src/Tizen.NUI/src/public/Window/Window.cs index 4dce26fc600..1567a5ccc74 100755 --- a/src/Tizen.NUI/src/public/Window/Window.cs +++ b/src/Tizen.NUI/src/public/Window/Window.cs @@ -416,6 +416,44 @@ public enum ResizeDirection BottomRight = 8, } + /// + /// The Pointer edge boundary for grab. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public enum PointerBoundary + { + /// + /// Default value + /// + [EditorBrowsable(EditorBrowsableState.Never)] + None = 0, + + /// + /// Top + /// + [EditorBrowsable(EditorBrowsableState.Never)] + Top = 1, + + /// + /// Right + /// + [EditorBrowsable(EditorBrowsableState.Never)] + Right = 2, + + /// + /// Bottom + /// + [EditorBrowsable(EditorBrowsableState.Never)] + Bottom = 3, + + /// + /// Left + /// + [EditorBrowsable(EditorBrowsableState.Never)] + Left = 4, + + } + /// /// The stage instance property (read-only).
/// Gets the current window.
@@ -2549,6 +2587,30 @@ public bool IsAlwaysOnTop } } + /// + /// Requests relative motion grab + /// + /// True if RelativeMotionGrab succeeds. + [EditorBrowsable(EditorBrowsableState.Never)] + public bool RelativeMotionGrab(PointerBoundary boundary) + { + bool ret = Interop.Window.RelativeMotionGrab(SwigCPtr, (uint)boundary); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + + /// + /// Requests relative motion ungrab + /// + /// True if RelativeMotionGrab succeeds. + [EditorBrowsable(EditorBrowsableState.Never)] + public bool RelativeMotionUnGrab() + { + bool ret = Interop.Window.RelativeMotionUnGrab(SwigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + IntPtr IWindowProvider.WindowHandle => GetNativeWindowHandler(); float IWindowProvider.X => WindowPosition.X; float IWindowProvider.Y => WindowPosition.Y;