[NUI] Keep the previously set FittingMode value
authorSunghyun Kim <scholb.kim@samsung.com>
Tue, 6 Apr 2021 07:41:56 +0000 (16:41 +0900)
committerhuiyueun <35286162+huiyueun@users.noreply.github.com>
Tue, 20 Apr 2021 06:13:00 +0000 (15:13 +0900)
FittingMode should be applied even if Url is set later.
so ImageView need to keep the previsouly set fittingMode value.

src/Tizen.NUI/src/public/BaseComponents/ImageView.cs

index f0a5b1c..a251914 100755 (executable)
@@ -266,6 +266,7 @@ namespace Tizen.NUI.BaseComponents
         private string _alphaMaskUrl = null;
         private int _desired_width = -1;
         private int _desired_height = -1;
+        private VisualFittingModeType _fittingMode = VisualFittingModeType.Fill;
         private readonly TriggerableSelector<string> resourceUrlSelector = new TriggerableSelector<string>(ResourceUrlProperty);
         private readonly TriggerableSelector<Rectangle> borderSelector = new TriggerableSelector<Rectangle>(BorderProperty);
 
@@ -889,12 +890,13 @@ namespace Tizen.NUI.BaseComponents
         {
             get
             {
-                int ret = (int)VisualFittingModeType.Fill;
+                int ret = (int)_fittingMode;
                 PropertyMap imageMap = new PropertyMap();
                 PropertyValue image = Tizen.NUI.Object.GetProperty(SwigCPtr, ImageView.Property.IMAGE);
                 image?.Get(imageMap);
                 PropertyValue fittingMode = imageMap?.Find(Visual.Property.VisualFittingMode);
                 fittingMode?.Get(out ret);
+                _fittingMode = (VisualFittingModeType)ret;
 
                 imageMap?.Dispose();
                 image?.Dispose();
@@ -905,6 +907,7 @@ namespace Tizen.NUI.BaseComponents
             set
             {
                 VisualFittingModeType ret = CovertFittingModetoVisualFittingMode(value);
+                _fittingMode = ret;
                 PropertyValue setValue = new PropertyValue((int)ret);
                 UpdateImage(Visual.Property.VisualFittingMode, setValue);
                 setValue?.Dispose();
@@ -1223,6 +1226,13 @@ namespace Tizen.NUI.BaseComponents
                 border?.Dispose();
             }
 
+            if(key != Visual.Property.VisualFittingMode && _fittingMode != VisualFittingModeType.Fill)
+            {
+                PropertyValue fittingMode = new PropertyValue((int)_fittingMode);
+                imageMap?.Insert(Visual.Property.VisualFittingMode, fittingMode);
+                fittingMode?.Dispose();
+            }
+
             PropertyValue synchronosLoading = new PropertyValue(_synchronosLoading);
             imageMap?.Insert(NpatchImageVisualProperty.SynchronousLoading, synchronosLoading);
             synchronosLoading?.Dispose();