Hold added object reference in ItemObject
authorSeungkeun Lee <sngn.lee@samsung.com>
Wed, 26 Oct 2016 00:29:58 +0000 (09:29 +0900)
committerSeungkeun Lee <sngn.lee@samsung.com>
Wed, 26 Oct 2016 06:16:38 +0000 (15:16 +0900)
 - The lifecycle of added object will same with contained object

Change-Id: I01be33a413f5b3706a7828c2b9e5016268931a24

src/ElmSharp/ElmSharp/ItemObject.cs

index a3cc6e2..fb44251 100644 (file)
@@ -12,6 +12,7 @@ namespace ElmSharp
         private static Dictionary<IntPtr, ItemObject> s_HandleToItemTable = new Dictionary<IntPtr, ItemObject>();
         private static int s_globalId = 0;
 
+        readonly Dictionary<string, EvasObject> _partContents = new Dictionary<string, EvasObject>();
         Interop.Evas.SmartCallback _deleteCallback;
         IntPtr _handle = IntPtr.Zero;
 
@@ -81,6 +82,7 @@ namespace ElmSharp
                 Interop.Elementary.elm_object_item_part_content_unset(Handle, part);
             }
             Interop.Elementary.elm_object_item_part_content_set(Handle, part, content);
+            _partContents[part ?? "__default__"] = content;
         }
 
         public void SetPartText(string part, string text)
@@ -128,6 +130,7 @@ namespace ElmSharp
             {
                 s_HandleToItemTable.Remove(_handle);
             }
+            _partContents.Clear();
             _handle = IntPtr.Zero;
         }