return handler_obj;
}
+static Eina_Bool
+_softkey_service_cb_client_zone_set(void *data, int type EINA_UNUSED, void *event)
+{
+ E_Service_Softkey *softkey_service;
+ E_Event_Client_Zone_Set *ev;
+
+ softkey_service = data;
+ ev = event;
+
+ if (softkey_service->ec != ev->ec)
+ goto end;
+
+ if (softkey_service->zone == ev->zone)
+ goto end;
+
+ ELOGF("SOFTKEY_SRV", "Change Zone | taskbar_service %p old(%p) new(%p)",
+ softkey_service->ec, softkey_service, softkey_service->zone, ev->zone);
+
+ softkey_service->zone = ev->zone;
+
+end:
+ return ECORE_CALLBACK_PASS_ON;
+}
+
EINTERN void
e_service_softkey_client_set(E_Client *ec)
{
ELOGF("SOFTKEY_SRV", "%s", ec, __func__);
E_Service_Softkey *softkey_service;
+ E_Zone *zone;
if (_e_softkey_service_funcs && _e_softkey_service_funcs->softkey_service_client_set)
{
ELOGF("SOFTKEY_SRV", "SET Softkey service", ec);
- softkey_service = e_service_softkey_get(ec->zone);
+ zone = e_comp_zone_find_by_ec(ec);
+ softkey_service = e_service_softkey_get(zone);
if (!softkey_service)
- softkey_service = e_service_softkey_add(ec->zone, ec);
+ softkey_service = e_service_softkey_add(zone, ec);
else
{
if (softkey_service->ec != ec)
{
e_service_softkey_del(softkey_service);
- softkey_service = e_service_softkey_add(ec->zone, ec);
+ softkey_service = e_service_softkey_add(zone, ec);
}
}
evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _e_service_softkey_client_evas_cb_show, softkey_service);
evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE, _e_service_softkey_client_evas_cb_hide, softkey_service);
+
+ E_LIST_HANDLER_APPEND(softkey_service->events, E_EVENT_CLIENT_ZONE_SET, _softkey_service_cb_client_zone_set, softkey_service);
}
EINTERN void
ELOGF("SOFTKEY_SRV", "%s", ec, __func__);
E_Service_Softkey *softkey_service;
+ E_Zone *zone;
if (_e_softkey_service_funcs && _e_softkey_service_funcs->softkey_service_client_unset)
{
return;
}
- softkey_service = e_service_softkey_get(ec->zone);
+ zone = e_comp_zone_find_by_ec(ec);
+ softkey_service = e_service_softkey_get(zone);
if (!softkey_service) return;
+ E_FREE_LIST(softkey_service->events, ecore_event_handler_del);
evas_object_event_callback_del(softkey_service->ec->frame, EVAS_CALLBACK_SHOW, _e_service_softkey_client_evas_cb_show);
evas_object_event_callback_del(softkey_service->ec->frame, EVAS_CALLBACK_HIDE, _e_service_softkey_client_evas_cb_hide);
e_service_softkey_restore_visible_request(E_Service_Softkey *softkey_service)
{
E_Service_Softkey_Pending_Visible_Request *vis_req;
+ E_Zone *zone;
Eina_List *l, *ll;
Eina_Bool restored = EINA_FALSE;
EINA_LIST_REVERSE_FOREACH_SAFE(_e_softkey_service_pending_req.visible, l, ll, vis_req)
{
- if (vis_req->ec->zone == softkey_service->zone)
+ zone = e_comp_zone_find_by_ec(vis_req->ec);
+ if (zone == softkey_service->zone)
{
if (!restored)
{
E_Service_Softkey *softkey_service = NULL;
E_Policy_Angle_Map ridx;
+ E_Zone *zone;
EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
EINA_SAFETY_ON_TRUE_RETURN_VAL(e_object_is_del(E_OBJECT(ec)), EINA_FALSE);
ELOGF("SOFTKEY", "SOFTKEY_SRV.. SET Softkey region. angle:%d", ec, angle);
- softkey_service = e_service_softkey_get(ec->zone);
+ zone = e_comp_zone_find_by_ec(ec);
+ softkey_service = e_service_softkey_get(zone);
EINA_SAFETY_ON_NULL_RETURN_VAL(softkey_service, EINA_FALSE);
if (!softkey_service->handler_obj)