[NUI] Add TouchArea property. (#2105)
authorJoogabYun <40262755+JoogabYun@users.noreply.github.com>
Tue, 3 Nov 2020 01:23:13 +0000 (10:23 +0900)
committerTizenAPI-Bot <37820187+TizenAPI-Bot@users.noreply.github.com>
Tue, 3 Nov 2020 03:44:07 +0000 (12:44 +0900)
Default touchable area is view's size.
TouchArea can reset the view's touchable area.

This is usefull when the view is small, but it should have a larger touch area.

for example

      View view = new View();
      view.Size = new Size(10, 10);
      view.TouchEvent += OnTouchEvent;
      view.TouchArea = new Size2D(200, 200);

The view is small, If you want to set the touch area to a larger area,
you can use the TouchArea property.

src/Tizen.NUI/src/internal/Interop/Interop.ActorProperty.cs
src/Tizen.NUI/src/public/BaseComponents/ViewEnum.cs
src/Tizen.NUI/src/public/BaseComponents/ViewEvent.cs

index ec56de3..2b0c9b4 100755 (executable)
@@ -188,6 +188,9 @@ namespace Tizen.NUI
             [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Actor_Property_CAPTURE_ALL_TOUCH_AFTER_START_get")]
             public static extern int ActorPropertyCaptureAllTouchAfterStartGet();
 
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Actor_Property_TOUCH_AREA_get")]
+            public static extern int ActorPropertyTouchAreaGet();
+
             [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_Actor_Property")]
             public static extern global::System.IntPtr new_Actor_Property();
 
index afdc48b..cfc8534 100755 (executable)
@@ -208,6 +208,7 @@ namespace Tizen.NUI.BaseComponents
             internal static readonly int PADDING = Interop.ViewProperty.View_Property_PADDING_get();
             internal static readonly int SHADOW = Interop.ViewProperty.View_Property_SHADOW_get();
             internal static readonly int CaptureAllTouchAfterStart = Interop.ActorProperty.ActorPropertyCaptureAllTouchAfterStartGet();
+            internal static readonly int TouchArea = Interop.ActorProperty.ActorPropertyTouchAreaGet();
         }
     }
 }
index 62513e7..c4e380e 100755 (executable)
@@ -1273,5 +1273,25 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// TouchArea can reset the view's touchable area.<br/>
+        /// If you set the TouchArea on an view, when you touch the view, the touch area is used rather than the size of the view.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Size2D TouchArea
+        {
+            get
+            {
+                Size2D temp = new Size2D(0, 0);
+                GetProperty(View.Property.TouchArea).Get(temp);
+                return new Size2D(temp.Width, temp.Height);
+            }
+            set
+            {
+                SetProperty(View.Property.TouchArea, new Tizen.NUI.PropertyValue(value));
+                NotifyPropertyChanged();
+            }
+        }
+
     }
 }