/////////////////////////////////////
+#ifdef REFACTOR_DESK_AREA
+EINTERN void
+_e_comp_object_transform_obj_stack_update(Evas_Object *obj)
+#else
static void
_e_comp_object_transform_obj_stack_update(Evas_Object *obj)
+#endif
{
int layer = 0;
API_ENTRY;
#endif
}
+#ifdef REFACTOR_DESK_AREA
+#else
typedef void (*E_Comp_Object_Stack_Func)(Evas_Object *obj, Evas_Object *stack);
+#endif
static void
_e_comp_object_raise(Evas_Object *obj)
}
}
+#ifdef REFACTOR_DESK_AREA
+EINTERN void
+_e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target)
+#else
static void
_e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target)
+#endif
{
evas_object_stack_above(obj, target);
return (topmost) ? topmost->layer_pending : EINA_FALSE;
}
+#ifdef REFACTOR_DESK_AREA
+EINTERN void
+_e_comp_intercept_stack_helper(E_Comp_Object *cw, Evas_Object *stack, E_Comp_Object_Stack_Func stack_cb)
+#else
static void
_e_comp_intercept_stack_helper(E_Comp_Object *cw, Evas_Object *stack, E_Comp_Object_Stack_Func stack_cb)
+#endif
{
E_Comp_Object *cw2 = NULL;
E_Client *ecstack;
{
EINA_SAFETY_ON_TRUE_RETURN(obj == above);
+ TRACE_DS_BEGIN(COMP:INTERCEPT STACK ABOVE);
+
+#ifdef REFACTOR_DESK_AREA
+ E_Comp_Object *cw = data;
+ E_Comp_Object_Data_Stack_Above stack_above_data;
+
+ stack_above_data.cw = cw;
+ stack_above_data.above_obj = above;
+
+ wl_signal_emit_mutable(&cw->events.stack_above, &stack_above_data);
+#else
if (evas_object_below_get(obj) == above)
{
e_comp_object_layer_update(obj, above, NULL);
return;
}
- TRACE_DS_BEGIN(COMP:INTERCEPT STACK ABOVE);
_e_comp_intercept_stack_helper(data, above, _e_comp_object_stack_above);
+
_e_comp_object_transform_obj_stack_update(obj);
_e_comp_object_transform_obj_stack_update(above);
+#endif
+
TRACE_DS_END();
}
} E_Comp_Object_Data_Stack_Below;
//#ifdef REFACTOR_DESK_AREA
+typedef void (*E_Comp_Object_Stack_Func)(Evas_Object *obj, Evas_Object *stack);
+
EINTERN void _e_comp_object_layers_add(E_Comp_Object *cw, E_Comp_Object *above, E_Comp_Object *below, Eina_Bool prepend);
EINTERN void _e_comp_object_layers_remove(E_Comp_Object *cw);
EINTERN void e_comp_object_layer_set(Evas_Object *obj, short layer);
+EINTERN void _e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target);
+EINTERN void _e_comp_intercept_stack_helper(E_Comp_Object *cw, Evas_Object *stack, E_Comp_Object_Stack_Func stack_cb);
+EINTERN void _e_comp_object_transform_obj_stack_update(Evas_Object *obj);
//#endif
EINTERN void e_comp_object_lower_listener_add(Evas_Object *obj, struct wl_listener *listener);
static void
_desk_area_cb_comp_object_stack_above(struct wl_listener *listener, void *data)
{
- // TODO:
+ E_Desk_Area_Private_Client *eda_client;
+ E_Client *ec;
+ Evas_Object *obj, *above;
+ E_Comp_Object_Data_Stack_Above *stack_above_data;
+ E_Comp_Object *cw;
+
+ eda_client = wl_container_of(listener, eda_client, comp_object_set_layer);
+ ec = eda_client->ec;
+ obj = ec->frame;
+ stack_above_data = (E_Comp_Object_Data_Stack_Above *)data;
+ cw = stack_above_data->cw;
+ above = stack_above_data->above_obj;
+
+ if (evas_object_below_get(obj) == above)
+ {
+ e_comp_object_layer_update(obj, above, NULL);
+ return;
+ }
+
+ _e_comp_intercept_stack_helper(cw, above, _e_comp_object_stack_above);
+
+ _e_comp_object_transform_obj_stack_update(obj);
+ _e_comp_object_transform_obj_stack_update(above);
+
}
static void