Tzsh_Client_Handle_Type handle_type;
E_Pixmap *ep;
E_Client *ec;
+ E_Zone *zone;
void *client_data;
+ Eina_List *events;
} E_Policy_Wl_Tzsh_Client;
typedef struct _E_Policy_Wl_Tzsh_Client_Data_Quickpanel
// --------------------------------------------------------
// E_Policy_Wl_Tzsh_Client
// --------------------------------------------------------
+static Eina_Bool
+_e_policy_wl_tzsh_client_cb_client_zone_set(void *data, int type EINA_UNUSED, void *event)
+{
+ E_Policy_Wl_Tzsh_Client *tzsh_client;
+ E_Event_Client_Zone_Set *ev;
+
+ tzsh_client = data;
+ ev = event;
+
+ if (tzsh_client->ec != ev->ec)
+ goto end;
+
+ if (tzsh_client->zone == ev->zone)
+ goto end;
+
+ ELOGF("TZSH", "Change Zone | e_policy_wl_tzsh_client %p old(%p) new(%p)",
+ tzsh_client->ec, tzsh_client, tzsh_client->zone, ev->zone);
+
+ tzsh_client->zone = ev->zone;
+
+end:
+ return ECORE_CALLBACK_PASS_ON;
+}
+
static E_Policy_Wl_Tzsh_Client *
_e_policy_wl_tzsh_client_add(E_Policy_Wl_Tzsh *tzsh, struct wl_resource *res_tzsh_client, E_Pixmap *ep, E_Client *ec)
{
tzsh_client->res_tzsh_client = res_tzsh_client;
tzsh_client->ep = ep;
tzsh_client->ec = ec;
+ tzsh_client->zone = e_comp_zone_find_by_ec(ec);
tzsh_client->tzsh->client_list = eina_list_append(tzsh_client->tzsh->client_list, tzsh_client);
polwl->tzsh_clients = eina_list_append(polwl->tzsh_clients, tzsh_client);
+ E_LIST_HANDLER_APPEND(tzsh_client->events, E_EVENT_CLIENT_ZONE_SET, _e_policy_wl_tzsh_client_cb_client_zone_set, tzsh_client);
+
#ifdef TZSH_DEBUG
_print_tzsh_client_info();
#endif
{
if (!tzsh_client) return;
+ E_FREE_LIST(tzsh_client->events, ecore_event_handler_del);
+
if (tzsh_client->tzsh)
tzsh_client->tzsh->service_list = eina_list_remove(tzsh_client->tzsh->service_list, tzsh_client);
}
static void
-_tzsh_softkey_show(E_Client *ec)
+_tzsh_softkey_show(E_Policy_Wl_Tzsh_Client *tzsh_client)
{
+ E_Zone *zone;
+ E_Client *ec;
+
+ zone = tzsh_client->zone;
+ if (!zone) return;
+ ec = tzsh_client->ec;
if (!ec) return;
- if (!ec->zone) return;
if (e_config->use_softkey)
{
E_Policy_Softkey *softkey;
- softkey = e_policy_softkey_get(ec->zone);
+ softkey = e_policy_softkey_get(zone);
if (softkey)
{
- ELOGF("TZ_SOFTKEY", "SHOW softkey", NULL);
+ ELOGF("TZ_SOFTKEY", "SHOW softkey", ec);
e_policy_softkey_show(softkey);
}
}
if (e_config->use_softkey_service)
{
E_Service_Softkey *softkey_service;
- softkey_service = e_service_softkey_get(ec->zone);
+ softkey_service = e_service_softkey_get(zone);
if (softkey_service)
{
- ELOGF("TZ_SOFTKEY", "Request to SHOW softkey service. (service:%p)", NULL, softkey_service);
+ ELOGF("TZ_SOFTKEY", "Request to SHOW softkey service. (service:%p)", ec, softkey_service);
e_service_softkey_visible_set(softkey_service, 1);
}
else
return;
tzsh_client_data_softkey->show_state = 1;
- _tzsh_softkey_show(tzsh_client->ec);
+ _tzsh_softkey_show(tzsh_client);
}
static void
-_tzsh_softkey_hide(E_Client *ec)
+_tzsh_softkey_hide(E_Policy_Wl_Tzsh_Client *tzsh_client)
{
+ E_Zone *zone;
+ E_Client *ec;
+
+ zone = tzsh_client->zone;
+ if (!zone) return;
+ ec = tzsh_client->ec;
if (!ec) return;
- if (!ec->zone) return;
if (e_config->use_softkey)
{
E_Policy_Softkey *softkey;
- softkey = e_policy_softkey_get(ec->zone);
+ softkey = e_policy_softkey_get(zone);
if (softkey)
{
ELOGF("TZ_SOFTKEY", "HIDE softkey", NULL);
if (e_config->use_softkey_service)
{
E_Service_Softkey *softkey_service;
- softkey_service = e_service_softkey_get(ec->zone);
+ softkey_service = e_service_softkey_get(zone);
if (softkey_service)
{
- ELOGF("TZ_SOFTKEY", "Request to HIDE softkey service. (service:%p)", NULL, softkey_service);
+ ELOGF("TZ_SOFTKEY", "Request to HIDE softkey service. (service:%p)", ec, softkey_service);
e_service_softkey_visible_set(softkey_service, 0);
}
else
return;
tzsh_client_data_softkey->show_state = 0;
- _tzsh_softkey_hide(tzsh_client->ec);
+ _tzsh_softkey_hide(tzsh_client);
}
static void
if (e_config->use_softkey)
{
E_Policy_Softkey *softkey;
- softkey = e_policy_softkey_get(tzsh_client->ec->zone);
+ softkey = e_policy_softkey_get(tzsh_client->zone);
if (!softkey) return;
switch (type)
{
E_Service_Softkey *softkey_service;
- softkey_service = e_service_softkey_get(tzsh_client->ec->zone);
+ softkey_service = e_service_softkey_get(tzsh_client->zone);
if (!softkey_service) return;
switch (type)
E_Policy_Wl_Tzsh_Client *tzsh_client;
E_Policy_Softkey_Expand expand;
E_Policy_Softkey_Opacity opacity;
+ E_Zone *zone;
int visible;
int val;
EINA_SAFETY_ON_NULL_RETURN(tzsh_client);
EINA_SAFETY_ON_NULL_RETURN(tzsh_client->tzsh);
EINA_SAFETY_ON_NULL_RETURN(tzsh_client->ec);
+ zone = tzsh_client->zone;
+ EINA_SAFETY_ON_NULL_RETURN(zone);
if (!eina_list_data_find(polwl->tzsh_clients, tzsh_client))
return;
if (e_config->use_softkey)
{
E_Policy_Softkey *softkey;
- softkey = e_policy_softkey_get(tzsh_client->ec->zone);
+ softkey = e_policy_softkey_get(zone);
if (!softkey) return;
switch (type)
if (e_config->use_softkey_service)
{
E_Service_Softkey *softkey_service;
- softkey_service = e_service_softkey_get(tzsh_client->ec->zone);
+ softkey_service = e_service_softkey_get(zone);
if (!softkey_service) return;
switch (type)
if (tzsh_client_data_softkey->show_state == 0)
{
ELOGF("TZ_SOFTKEY", "Request to Show softkey by destroying client", NULL);
- _tzsh_softkey_show(tzsh_client->ec);
+ _tzsh_softkey_show(tzsh_client);
}
}
E_FREE(tzsh_client->client_data);