raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=8b62039e6acb7571efa160c1dbf51b9dc0cf9b1c

commit 8b62039e6acb7571efa160c1dbf51b9dc0cf9b1c
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Wed Jan 29 22:17:31 2014 +0900

    support temporary layer changes for iconify anim purposes
---
 src/bin/e_comp_object.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 8019b8d..3b312f6 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -93,6 +93,7 @@ typedef struct _E_Comp_Object
    Eina_Bool            updates_full : 1; // entire object will be updated
 
    Eina_Bool            force_move : 1;
+   Eina_Bool            layer_tmp : 1; // layer chage is temporary - effect
 } E_Comp_Object;
 
 static Evas_Smart *_e_comp_smart = NULL;
@@ -501,6 +502,8 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw)
      {
         e_iconify_provider_obj_message(cw->ec, EINA_TRUE, cw->shobj);
         e_comp_object_signal_emit(cw->smart_obj, "e,action,iconify", "e");
+        cw->layer_tmp = EINA_TRUE;
+        evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO);
      }
    else
      e_comp_object_signal_emit(cw->smart_obj, "e,state,hidden", "e");
@@ -509,6 +512,8 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw)
      {
         e_iconify_provider_obj_message(cw->ec, EINA_TRUE, cw->shobj);
         e_comp_object_signal_emit(cw->smart_obj, "e,action,iconify", "e");
+        cw->layer_tmp = EINA_TRUE;
+        evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO);
      }
    if (!cw->zoomap_disabled)
      e_zoomap_child_set(cw->zoomobj, NULL);
@@ -562,6 +567,12 @@ _e_comp_object_done_defer(void *data, Evas_Object *obj 
EINA_UNUSED, const char *
        ((!strcmp(emission, "e,action,hide,done")) ||
         (!strcmp(emission, "e,action,iconify,done"))))
      evas_object_hide(cw->smart_obj);
+   if ((!strcmp(emission, "e,action,iconify,done")) ||
+       (!strcmp(emission, "e,action,uniconify,done")))
+     {
+        cw->layer_tmp = EINA_FALSE;
+        evas_object_layer_set(cw->smart_obj, cw->ec->layer);
+     }
 }
 
 /////////////////////////////////////////////
@@ -841,7 +852,7 @@ _e_comp_intercept_layer_set(void *data, Evas_Object *obj, 
int layer)
    _e_comp_object_layers_remove(cw);
    /* clamp to valid client layer */
    layer = e_comp_canvas_client_layer_map_nearest(layer);
-   cw->ec->layer = layer;
+   if (!cw->layer_tmp) cw->ec->layer = layer;
    if (e_config->transient.layer)
      {
         E_Client *child;
@@ -1168,6 +1179,8 @@ _e_comp_intercept_hide(void *data, Evas_Object *obj)
                {
                   e_iconify_provider_obj_message(cw->ec, EINA_TRUE, cw->shobj);
                   e_comp_object_signal_emit(obj, "e,action,iconify", "e");
+                  cw->layer_tmp = EINA_TRUE;
+                  evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO);
                }
              else
                e_comp_object_signal_emit(obj, "e,state,hidden", "e");
@@ -1191,6 +1204,8 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw)
           {
              e_iconify_provider_obj_message(cw->ec, EINA_FALSE, cw->shobj);
              e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", 
"e");
+             cw->layer_tmp = EINA_TRUE;
+             evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO);
              cw->defer_hide = 0;
           }
         return;
@@ -1844,6 +1859,8 @@ _e_comp_smart_show(Evas_Object *obj)
      {
         e_iconify_provider_obj_message(cw->ec, EINA_FALSE, cw->shobj);
         e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e");
+        cw->layer_tmp = EINA_TRUE;
+        evas_object_layer_set(cw->smart_obj, E_LAYER_CLIENT_PRIO);
      }
    else
      e_comp_object_signal_emit(cw->smart_obj, "e,state,visible", "e");

-- 


Reply via email to