Support compormant
authorHyunho Kang <hhstark.kang@samsung.com>
Tue, 7 Mar 2017 05:25:41 +0000 (14:25 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Wed, 8 Mar 2017 05:04:19 +0000 (14:04 +0900)
Current ElmSharp only support compormant for UI components.

Change-Id: I6591f93abc4ef2c74ae1ce92277030f74e005c1b
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
src/Tizen.Applications.WidgetApplication/Interop/Interop.Libraries.cs
src/Tizen.Applications.WidgetApplication/Interop/Interop.Widget.cs
src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetBase.cs
src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetWindow.cs

index 7b43b38..aa36259 100755 (executable)
@@ -21,5 +21,7 @@ internal static partial class Interop
         public const string AppCommon = "libcapi-appfw-app-common.so.0";
         public const string AppcoreWidget = "libcapi-appfw-widget-application.so.1";
         public const string WidgetService = "libwidget_service.so.1";
+        public const string Elementary = "libelementary.so.1";
+        public const string Evas = "libevas.so.1";
     }
 }
index 390227d..6d1cde2 100755 (executable)
@@ -77,6 +77,18 @@ internal static partial class Interop
 
         internal delegate int WidgetInstanceUpdateCallback(IntPtr context, IntPtr content, int force, IntPtr userData);
 
+        [DllImport(Libraries.Evas)]
+        internal static extern void evas_object_size_hint_weight_set(IntPtr obj, double x, double y);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern void elm_win_conformant_set(IntPtr obj, bool conformant);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern void elm_win_resize_object_add(IntPtr obj, IntPtr subobj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern IntPtr elm_conformant_add(IntPtr obj);
+
         [DllImport(Libraries.AppcoreWidget, EntryPoint = "widget_app_main")]
         internal static extern ErrorCode Main(int argc, string[] argv, ref WidgetAppLifecycleCallbacks callback, IntPtr userData);
 
index 1527ca0..ef6c333 100755 (executable)
@@ -26,6 +26,7 @@ namespace Tizen.Applications
     {
         internal IntPtr Handle;
         internal string Id;
+        internal Widget BaseWindow;
         protected static readonly string LogTag = typeof(WidgetBase).Namespace;
 
         /// <summary>
@@ -160,8 +161,10 @@ namespace Tizen.Applications
             IntPtr win;
 
             Interop.Widget.GetWin(Handle, out win);
-            Window = new WidgetWindow(win);
-            Window.Resize(w, h);
+            BaseWindow = new WidgetWindow(win);
+            BaseWindow.Resize(w, h);
+            BaseWindow.Show();
+            Window = new ConformantWindow(Window, win);
             Window.Show();
         }
 
index 0502537..69e187f 100755 (executable)
@@ -34,6 +34,27 @@ namespace Tizen.Applications
         {
             return _handle;
         }
+    }
+
+    internal class ConformantWindow : Widget
+    {
+        private IntPtr _handle;
+        private IntPtr _conf;
+
+        internal ConformantWindow(EvasObject parent, IntPtr handle) : base()
+        {
+            _handle = handle;
+            Realize(parent);
+        }
+
+        protected override IntPtr CreateHandle(EvasObject parent)
+        {
+            _conf = Interop.Widget.elm_conformant_add(_handle);
+            Interop.Widget.evas_object_size_hint_weight_set(_conf, 1.0, 1.0);
+            Interop.Widget.elm_win_conformant_set(_handle, true);
+            Interop.Widget.elm_win_resize_object_add(_handle, _conf);
+            return _conf;
+        }
 
     }
 }