e_client: add e_client_layer_set() for the change of client layer 92/211692/3
authorJuyeon Lee <juyeonne.lee@samsung.com>
Thu, 8 Aug 2019 07:18:44 +0000 (16:18 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Fri, 9 Aug 2019 02:37:30 +0000 (02:37 +0000)
evas_object_layer_set is used for change client layer or effect
to distinguish the usage and reduce inappropriate use, added
NEW API: e_client_layer_set

this api ensures layer change.

Change-Id: I7af68025bb642cdd281029bf073a09fd1dc74076

src/bin/e_client.c
src/bin/e_client.h

index 721d3a11887e690eee2d2a430c0c33e955bcbb6f..b134951139d202912baf6956c7b4bbdae3764938 100644 (file)
@@ -7493,3 +7493,24 @@ E_API void e_client_frame_focus_set(E_Client *ec, Eina_Bool focus)
    if (!ec) return;
    evas_object_focus_set(ec->frame, focus);
 }
+
+E_API void
+e_client_layer_set(E_Client *ec,
+                   E_Layer layer)
+{
+   E_OBJECT_CHECK(ec);
+   E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
+
+   if (ec->frame)
+     {
+        evas_object_layer_set(ec->frame, layer);
+        if (ec->layer != layer)
+          {
+             // if e_comp_object fail to change ec->layer due to ec->layer_pending or block
+             // leave log and apply ec->layer according to set
+             // as a result it restores back to its layer.
+             ELOGF("LAYER", "layer changed %d | layer pending(%d) or block(%d) ", ec, layer, ec->layer_pending, ec->layer_block);
+             ec->layer = layer;
+          }
+     }
+}
index cd7786d094aa0dcd52c7936bc138d278bf9f312d..d1703a8c20c413c7b760c75176701aeb8eb2efa8 100644 (file)
@@ -1190,6 +1190,8 @@ EINTERN Eina_Bool e_client_pending_geometry_has(E_Client *ec);
 
 E_API void e_client_frame_focus_set(E_Client *ec, Eina_Bool focus);
 
+E_API void e_client_layer_set(E_Client *ec, E_Layer layer);
+
 /**
  * Move window to coordinates that do not account client decorations yet.
  *