support temporary layer changes for iconify anim purposes

This commit is contained in:
Carsten Haitzler 2014-01-29 22:17:31 +09:00
parent 1ede2a5632
commit 8b62039e6a
1 changed files with 18 additions and 1 deletions

View File

@ -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");