[E_COMP_OBJECT_HOOK_EFFECT_START] = NULL,
[E_COMP_OBJECT_HOOK_EFFECT_END] = NULL,
[E_COMP_OBJECT_HOOK_RESTACK] = NULL,
+ [E_COMP_OBJECT_HOOK_LAYER_SET] = NULL,
};
#ifdef _F_E_COMP_OBJECT_INTERCEPT_HOOK_
static Eina_Bool _e_comp_object_dim_enable_get(E_Client *ec, Evas_Object *obj);
static void _e_comp_object_dim_update(E_Comp_Object *cw);
static void _e_comp_object_native_surface_set(E_Comp_Object *cw, Evas_Native_Surface *ns, Eina_Bool with_mirror);
+static void _e_comp_object_layer_set(Evas_Object *obj, short layer);
static E_Client *dim_client = NULL;
{
if ((hookpoint != E_COMP_OBJECT_HOOK_EFFECT_START) &&
(hookpoint != E_COMP_OBJECT_HOOK_EFFECT_END) &&
+ (hookpoint != E_COMP_OBJECT_HOOK_LAYER_SET) &&
(hookpoint != E_COMP_OBJECT_HOOK_RESTACK))
{
return ret;
if ((cw->ec->layer_block) || (cw->ec->layer_pending))
{
/* doing a compositor effect, follow directions */
- evas_object_layer_set(obj, layer);
+ _e_comp_object_layer_set(obj, layer);
if (layer == cw->ec->layer) //trying to put layer back
{
E_Client *ec;
_e_comp_object_layers_add(cw, NULL, NULL, 0);
//if (cw->ec->new_client)
//INF("CLIENT STACKED %p: %u", cw->ec, layer);
- evas_object_layer_set(obj, layer);
+ _e_comp_object_layer_set(obj, layer);
if (!e_comp->layers[cw->layer].obj) return; //this is a layer marker
evas_object_stack_below(obj, e_comp->layers[cw->layer].obj);
if (evas_object_below_get(obj) == e_comp->layers[cw->layer].obj)
}
}
+static void
+_e_comp_object_layer_set(Evas_Object *obj, short layer)
+{
+ evas_object_layer_set(obj, layer);
+
+ if (evas_object_smart_smart_get(obj))
+ {
+ E_Client *ec = e_comp_object_client_get(obj);
+ if (ec)
+ _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_LAYER_SET, ec);
+ }
+}
+
static Eina_Bool
_e_comp_object_is_pending(E_Client *ec)
{