From 5656582bd85a0d2a1f9ee284cce8d23abf73c771 Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Tue, 7 Mar 2017 14:25:41 +0900 Subject: [PATCH] Support compormant Current ElmSharp only support compormant for UI components. Change-Id: I6591f93abc4ef2c74ae1ce92277030f74e005c1b Signed-off-by: Hyunho Kang --- .../Interop/Interop.Libraries.cs | 2 ++ .../Interop/Interop.Widget.cs | 12 ++++++++++++ .../Tizen.Applications/WidgetBase.cs | 7 +++++-- .../Tizen.Applications/WidgetWindow.cs | 21 +++++++++++++++++++++ 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/Tizen.Applications.WidgetApplication/Interop/Interop.Libraries.cs b/src/Tizen.Applications.WidgetApplication/Interop/Interop.Libraries.cs index 7b43b38..aa36259 100755 --- a/src/Tizen.Applications.WidgetApplication/Interop/Interop.Libraries.cs +++ b/src/Tizen.Applications.WidgetApplication/Interop/Interop.Libraries.cs @@ -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"; } } diff --git a/src/Tizen.Applications.WidgetApplication/Interop/Interop.Widget.cs b/src/Tizen.Applications.WidgetApplication/Interop/Interop.Widget.cs index 390227d..6d1cde2 100755 --- a/src/Tizen.Applications.WidgetApplication/Interop/Interop.Widget.cs +++ b/src/Tizen.Applications.WidgetApplication/Interop/Interop.Widget.cs @@ -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); diff --git a/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetBase.cs b/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetBase.cs index 1527ca0..ef6c333 100755 --- a/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetBase.cs +++ b/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetBase.cs @@ -26,6 +26,7 @@ namespace Tizen.Applications { internal IntPtr Handle; internal string Id; + internal Widget BaseWindow; protected static readonly string LogTag = typeof(WidgetBase).Namespace; /// @@ -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(); } diff --git a/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetWindow.cs b/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetWindow.cs index 0502537..69e187f 100755 --- a/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetWindow.cs +++ b/src/Tizen.Applications.WidgetApplication/Tizen.Applications/WidgetWindow.cs @@ -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; + } } } -- 2.7.4