struct wl_signal client_visible_above_get;
struct wl_signal client_visible_below_get;
struct wl_signal has_ec;
+ struct wl_signal layer_obj_get;
struct wl_signal client_add;
struct wl_signal client_del;
wl_signal_init(&priv->events.client_visible_above_get);
wl_signal_init(&priv->events.client_visible_below_get);
wl_signal_init(&priv->events.has_ec);
+ wl_signal_init(&priv->events.layer_obj_get);
wl_signal_init(&priv->events.client_add);
wl_signal_init(&priv->events.client_del);
E_API Evas_Object *
e_desk_area_layer_object_get(E_Desk_Area *eda, E_Layer layer)
{
+ E_Desk_Area_Data_Layer_Object_Get data = {0,};
+
if (!eda) return NULL;
if (layer < E_LAYER_CLIENT_DESKTOP || layer > E_LAYER_MAX) return NULL;
-#ifdef NEED_REFINE_EDA_LAYERS_LIST
- E_Comp *comp;
- comp = e_comp_get();
- return comp->layers[e_comp_canvas_layer_map(layer)].obj;
-#else
- return eda->layers[e_comp_canvas_layer_map(layer)].obj;
-#endif
+ data.layer = layer;
+ wl_signal_emit(&PRI(eda)->events.layer_obj_get, &data);
+
+ return data.layer_obj;
}
wl_signal_add(&priv->events.has_ec, listener);
}
+EINTERN void
+e_desk_area_layer_obj_get_listener_add(E_Desk_Area *eda, struct wl_listener *listener)
+{
+ API_ENTRY;
+ wl_signal_add(&priv->events.layer_obj_get, listener);
+}
+
EINTERN void
e_desk_area_client_add_listener_add(E_Desk_Area *eda, struct wl_listener *listener)
{
Eina_Bool has_ec;
} E_Desk_Area_Data_Has_EC;
+typedef struct _E_Desk_Area_Data_Layer_Object_Get
+{
+ E_Layer layer;
+ Evas_Object *layer_obj;
+} E_Desk_Area_Data_Layer_Object_Get;
+
EINTERN int e_desk_area_init(void);
EINTERN int e_desk_area_shutdown(void);
EINTERN void e_desk_area_client_visible_above_get_listener_add(E_Desk_Area *eda, struct wl_listener *listener);
EINTERN void e_desk_area_client_visible_below_get_listener_add(E_Desk_Area *eda, struct wl_listener *listener);
EINTERN void e_desk_area_has_ec_listener_add(E_Desk_Area *eda, struct wl_listener *listener);
+EINTERN void e_desk_area_layer_obj_get_listener_add(E_Desk_Area *eda, struct wl_listener *listener);
EINTERN void e_desk_area_client_add_listener_add(E_Desk_Area *eda, struct wl_listener *listener);
EINTERN void e_desk_area_client_del_listener_add(E_Desk_Area *eda, struct wl_listener *listener);
struct wl_listener client_visible_above_get;
struct wl_listener client_visible_below_get;
struct wl_listener has_ec;
+ struct wl_listener layer_obj_get;
struct wl_listener client_add;
struct wl_listener client_del;
return;
}
+static void
+_e_policy_desk_area_cb_layer_obj_get(struct wl_listener *listener, void *data)
+{
+ E_Desk_Area_Data_Layer_Object_Get *obj_data = (E_Desk_Area_Data_Layer_Object_Get *) data;
+ E_Policy_Desk_Area *pda;
+ E_Policy_Desk_Area_Layer *pdal;
+ E_View *layer_view;
+
+ pda = wl_container_of(listener, pda, layer_obj_get);
+ pdal = pda->layers[obj_data->layer];
+
+ layer_view = e_policy_desk_area_layer_obj_get(pdal);
+ if (layer_view)
+ obj_data->layer_obj = layer_view->eo;
+
+ return;
+}
+
static void
_desk_area_cb_client_destroy(struct wl_listener *listener, void *data)
e_desk_area_client_visible_below_get_listener_add(eda, &pda->client_visible_below_get);
pda->has_ec.notify = _e_policy_desk_area_cb_has_ec;
e_desk_area_has_ec_listener_add(eda, &pda->has_ec);
+ pda->layer_obj_get.notify = _e_policy_desk_area_cb_layer_obj_get;
+ e_desk_area_layer_obj_get_listener_add(eda, &pda->layer_obj_get);
pda->client_add.notify = _e_policy_desk_area_cb_client_add;
e_desk_area_client_add_listener_add(eda, &pda->client_add);
return e_policy_container_view_tree_get(container);
}
+EINTERN E_View *
+e_policy_desk_area_layer_obj_get(E_Policy_Desk_Area_Layer *pdal)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(pdal, NULL);
+
+ return pdal->layer_bottom;
+}
+
EINTERN E_Policy_Desk_Area_Layer *
e_policy_desk_area_layer_new(E_Policy_Desk_Area *pda, E_Layer layer)
{
EINTERN Eina_Bool e_policy_desk_area_layer_has_ec(E_Policy_Desk_Area_Layer *pdal, E_Client *ec);
EINTERN E_View_Tree *e_policy_desk_area_layer_view_tree_get(E_Policy_Desk_Area_Layer *pdal);
+EINTERN E_View *e_policy_desk_area_layer_obj_get(E_Policy_Desk_Area_Layer *pdal);
EINTERN E_Policy_Desk_Area_Layer *e_policy_desk_area_layer_new(E_Policy_Desk_Area *pda, E_Layer layer);
EINTERN void e_policy_desk_area_layer_del(E_Policy_Desk_Area_Layer *pdal);