From 756e8a23f91324361f05253e800524a6371919f3 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Thu, 9 Nov 2017 15:34:50 +0900 Subject: [PATCH] add fuction - ecore_wl2_window_stack_mode_set API @tizen_feature Change-Id: If0872acef636f35ad9370dc78bc47c3cd84d5385 --- src/lib/ecore_wl2/Ecore_Wl2.h | 1 + src/lib/ecore_wl2/ecore_wl2_window.c | 10 ++++++ .../engines/wayland/ecore_evas_wayland_common.c | 39 ++++++++++++++++++++++ .../engines/wayland/ecore_evas_wayland_private.h | 8 +++++ 4 files changed, 58 insertions(+) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index 51fb42d..864a3b5 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -997,6 +997,7 @@ EAPI void ecore_wl2_window_raise(Ecore_Wl2_Window *window); EAPI void ecore_wl2_window_lower(Ecore_Wl2_Window *window); EAPI void ecore_wl2_window_activate(Ecore_Wl2_Window *window); EAPI void ecore_wl2_window_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent); +EAPI void ecore_wl2_window_stack_mode_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Stack_Mode mode); // /** diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index f4c5d9f..dc965d8 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -737,6 +737,16 @@ ecore_wl2_window_parent_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window *parent) EINA_SAFETY_ON_NULL_RETURN(window); window->parent = parent; } + +EAPI void +ecore_wl2_window_stack_mode_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Stack_Mode mode) +{ + EINA_SAFETY_ON_NULL_RETURN(window); + EINA_SAFETY_ON_NULL_RETURN(window->display); + + if ((window->surface) && (window->display->wl.tz_policy)) + tizen_policy_set_stack_mode(window->display->wl.tz_policy, window->surface, mode); +} // EAPI Eina_Bool diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c index 2172268..2d6c959 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c @@ -1686,6 +1686,42 @@ _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int la if (input) ecore_wl2_input_pointer_set(input, NULL, hot_x, hot_y); } +// TIZEN_ONLY(20160429) +static void +_ecore_evas_wl_layer_update(Ecore_Evas *ee) +{ + Ecore_Evas_Engine_Wl_Data *wdata = ee->engine.data; + + if (ee->prop.layer < 3) + { + if ((wdata->state.above) || (!wdata->state.below)) + { + wdata->state.above = 0; + wdata->state.below = 1; + ecore_wl2_window_stack_mode_set(wdata->win, ECORE_WL2_WINDOW_STACK_BELOW); + } + } + else if (ee->prop.layer > 5) + { + if ((!wdata->state.above) || (wdata->state.below)) + { + wdata->state.above = 1; + wdata->state.below = 0; + ecore_wl2_window_stack_mode_set(wdata->win, ECORE_WL2_WINDOW_STACK_ABOVE); + } + } + else + { + if ((wdata->state.above) || (wdata->state.below)) + { + wdata->state.above = 0; + wdata->state.below = 0; + ecore_wl2_window_stack_mode_set(wdata->win, ECORE_WL2_WINDOW_STACK_NONE); + } + } +} +// + static void _ecore_evas_wl_common_layer_set(Ecore_Evas *ee, int layer) { @@ -1696,6 +1732,9 @@ _ecore_evas_wl_common_layer_set(Ecore_Evas *ee, int layer) if (layer < 1) layer = 1; else if (layer > 255) layer = 255; ee->prop.layer = layer; + // TIZEN_ONLY(20160429) + _ecore_evas_wl_layer_update(ee); + // _ecore_evas_wl_common_state_update(ee); } diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h index 07832c6..331a6a5 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h @@ -58,6 +58,14 @@ struct _Ecore_Evas_Engine_Wl_Data Ecore_Job *manual_mode_job; } wm_rot; + // TIZEN_ONLY(20160429) + struct + { + unsigned char above : 1; + unsigned char below : 1; + } state; + // + Eina_Bool resizing : 1; Eina_Bool dragging : 1; Eina_Bool sync_done : 1; -- 2.7.4