[NUI] change size specification in changed callback of bindable property (#2516)
authorYeongJong Lee <cleanlyj@naver.com>
Thu, 21 Jan 2021 06:22:09 +0000 (15:22 +0900)
committerJiyun Yang <ji.yang@samsung.com>
Tue, 26 Jan 2021 08:27:40 +0000 (17:27 +0900)
If we change size2D by using Size2DProperty, size specification is not
changed. this patch will fix that issue.

Here is sample code:
```cs
View view = new View();
view.Size2D = new Size2D(100, 50);
Tizen.Log.Error("NUI", $"WidthSpecification : {view.WidthSpecification}, HeightSpecification : {view.HeightSpecification}");

View view2 = new View();
view2.SetValue(View.Size2DProperty, new Size2D(100, 50));
Tizen.Log.Error("NUI", $"WidthSpecification : {view2.WidthSpecification}, HeightSpecification : {view2.HeightSpecification}");
```

Before:
```
WidthSpecification : 100, HeightSpecification : 50
WidthSpecification : -2, HeightSpecification : -2
```

After:
```
WidthSpecification : 100, HeightSpecification : 50
WidthSpecification : 100, HeightSpecification : 50
```

Co-authored-by: Jiyun Yang <ji.yang@samsung.com>
src/Tizen.NUI/src/public/BaseComponents/View.cs
src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs

index a43899e..45bbe56 100755 (executable)
@@ -828,10 +828,6 @@ namespace Tizen.NUI.BaseComponents
             {
                 SetValue(Size2DProperty, value);
 
-                widthPolicy = value.Width;
-                heightPolicy = value.Height;
-                
-                layout?.RequestLayout();
                 NotifyPropertyChanged();
             }
         }
index 01fbc36..a4cf9aa 100755 (executable)
@@ -611,6 +611,10 @@ namespace Tizen.NUI.BaseComponents
             if (newValue != null)
             {
                 Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)view.SwigCPtr, View.Property.SIZE, new Tizen.NUI.PropertyValue(new Size((Size2D)newValue)));
+                view.widthPolicy = ((Size2D)newValue).Width;
+                view.heightPolicy = ((Size2D)newValue).Height;
+
+                view.layout?.RequestLayout();
             }
         }),
         defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>