#include "e_tizen_ws_shell_manager_intern.h"
#include "services/e_service_quickpanel_intern.h"
#include "services/e_service_volume_intern.h"
-#include "services/e_service_lockscreen_intern.h"
#include "services/e_service_indicator_intern.h"
#include "services/e_service_scrsaver_intern.h"
#include "services/e_service_launcher_intern.h"
if (tzsh_srv->name)
eina_stringshare_del(tzsh_srv->name);
- if (tzsh_srv->role == TZSH_SRV_ROLE_INDICATOR)
- {
- E_Client *ec;
- ec = tzsh_srv->ec;
-
- if (ec && ec->internal)
- {
- e_pixmap_win_id_del(tzsh_srv->ep);
- e_object_del(E_OBJECT(ec));
- }
-
- _indicator_srv_res = NULL;
- }
- else if (tzsh_srv->role == TZSH_SRV_ROLE_SOFTKEY)
- {
- E_Client *softkey_ec = NULL;
-
- softkey_ec = tzsh_srv->ec;
- if (softkey_ec)
- {
- e_service_softkey_client_unset(softkey_ec);
- }
- }
- else if (tzsh_srv->role == TZSH_SRV_ROLE_MAGNIFIER)
- {
- E_Client *magnifier_ec = NULL;
-
- magnifier_ec = tzsh_srv->ec;
- if (magnifier_ec)
- {
- e_magnifier_owner_unset(magnifier_ec);
- e_magnifier_del();
- }
- }
- else if (tzsh_srv->role == TZSH_SRV_ROLE_LAUNCHER)
- {
- E_Client *launcher_ec = NULL;
-
- launcher_ec = tzsh_srv->ec;
- if (launcher_ec)
- {
- e_service_launcher_client_unset(launcher_ec);
- }
- }
+ e_client_service_role_unset(tzsh_srv->ec); // unset the service_role of ec
ELOGF("TZSH", "FREE tzsh_srv:%p", tzsh_srv->ec, tzsh_srv);
tzsh_srv,
_tzsh_cb_srv_destroy);
- if (tzsh_srv->ec && tzsh_srv->ec->maximized)
- {
- tzsh_srv->ec->maximize_type = E_MAXIMIZE_TYPE_FULLSCREEN;
- e_client_maximize(tzsh_srv->ec, tzsh_srv->ec->maximize_type | E_MAXIMIZE_BOTH);
- }
-
- if (role == TZSH_SRV_ROLE_QUICKPANEL_SYSTEM_DEFAULT)
- e_service_quickpanel_client_add(tzsh_srv->ec, E_SERVICE_QUICKPANEL_TYPE_SYSTEM_DEFAULT);
- else if (role == TZSH_SRV_ROLE_QUICKPANEL_CONTEXT_MENU)
- e_service_quickpanel_client_add(tzsh_srv->ec, E_SERVICE_QUICKPANEL_TYPE_CONTEXT_MENU);
- else if (role == TZSH_SRV_ROLE_QUICKPANEL_APPS_MENU)
- e_service_quickpanel_client_add(tzsh_srv->ec, E_SERVICE_QUICKPANEL_TYPE_APPS_MENU);
- else if (role == TZSH_SRV_ROLE_VOLUME)
- e_service_volume_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_LOCKSCREEN)
- e_service_lockscreen_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_SCREENSAVER_MNG)
- e_service_scrsaver_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_SCREENSAVER)
- e_service_scrsaver_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_INDICATOR)
- e_mod_indicator_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_CBHM)
- e_service_cbhm_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_SOFTKEY)
- e_service_softkey_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_MAGNIFIER)
- {
- e_magnifier_new();
- e_magnifier_owner_set(tzsh_srv->ec);
- }
- else if (role == TZSH_SRV_ROLE_LAUNCHER)
- e_service_launcher_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_TASKBAR)
- e_service_taskbar_client_set(tzsh_srv->ec);
- else if (role == TZSH_SRV_ROLE_KVM)
- {
- E_Service_Kvm *esk = e_service_kvm_service_get(ec);
- if (!esk)
- {
- esk = e_service_kvm_new();
- e_service_kvm_client_set(esk, tzsh_srv->ec);
- }
- }
-
- e_client_desk_iconify_skip_set(tzsh_srv->ec, EINA_TRUE);
+ e_client_service_role_set(ec, role); // set service role to e_client
}
// --------------------------------------------------------
#include "e_canvas_intern.h"
#include "e_config_intern.h"
#include "e_comp_cfdata_intern.h"
-
+#include "services/e_service_quickpanel_intern.h"
+#include "services/e_service_volume_intern.h"
+#include "services/e_service_lockscreen_intern.h"
+#include "services/e_service_indicator_intern.h"
+#include "services/e_service_scrsaver_intern.h"
+#include "services/e_service_launcher_intern.h"
+#include "services/e_service_taskbar_intern.h"
+#include "services/e_service_kvm_intern.h"
+#include "services/e_service_softkey_intern.h"
+#include "services/e_service_cbhm_intern.h"
+#include "e_tizen_ws_shell_manager_intern.h"
+#include "e_magnifier_intern.h"
typedef struct _E_Policy_Desk_Area_Private_Client E_Policy_Desk_Area_Private_Client;
{
E_Desk_Area *eda;
E_Client *ec;
+ int service_role;
// client listeners
struct wl_listener client_destroy;
struct wl_listener delete_request;
struct wl_listener kill_request;
struct wl_listener redirect;
+ struct wl_listener client_service_role_set;
+ struct wl_listener client_service_role_unset;
// comp_object listeners
struct wl_listener comp_object_raise;
layer_data->layer = E_LAYER_BOTTOM; //not on E_LAYER_CLIENT
}
+static void
+_desk_area_cb_client_service_role_set(struct wl_listener *listener, void *data)
+{
+ E_Policy_Desk_Area_Private_Client *eda_client;
+ E_Client *ec;
+ int service_role = *((int *)data);
+
+ eda_client = wl_container_of(listener, eda_client, client_service_role_set);
+ ec = eda_client->ec;
+
+ if (ec->maximized)
+ {
+ ec->maximize_type = E_MAXIMIZE_TYPE_FULLSCREEN;
+ e_client_maximize(ec, ec->maximize_type | E_MAXIMIZE_BOTH);
+ }
+
+ if (service_role == TZSH_SRV_ROLE_QUICKPANEL_SYSTEM_DEFAULT)
+ e_service_quickpanel_client_add(ec, E_SERVICE_QUICKPANEL_TYPE_SYSTEM_DEFAULT);
+ else if (service_role == TZSH_SRV_ROLE_QUICKPANEL_CONTEXT_MENU)
+ e_service_quickpanel_client_add(ec, E_SERVICE_QUICKPANEL_TYPE_CONTEXT_MENU);
+ else if (service_role == TZSH_SRV_ROLE_QUICKPANEL_APPS_MENU)
+ e_service_quickpanel_client_add(ec, E_SERVICE_QUICKPANEL_TYPE_APPS_MENU);
+ else if (service_role == TZSH_SRV_ROLE_VOLUME)
+ e_service_volume_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_LOCKSCREEN)
+ e_service_lockscreen_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_SCREENSAVER_MNG)
+ e_service_scrsaver_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_SCREENSAVER)
+ e_service_scrsaver_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_INDICATOR)
+ e_mod_indicator_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_CBHM)
+ e_service_cbhm_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_SOFTKEY)
+ e_service_softkey_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_MAGNIFIER)
+ {
+ e_magnifier_new();
+ e_magnifier_owner_set(ec);
+ }
+ else if (service_role == TZSH_SRV_ROLE_LAUNCHER)
+ e_service_launcher_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_TASKBAR)
+ e_service_taskbar_client_set(ec);
+ else if (service_role == TZSH_SRV_ROLE_KVM)
+ {
+ E_Service_Kvm *esk = e_service_kvm_service_get(ec);
+ if (!esk)
+ {
+ esk = e_service_kvm_new();
+ e_service_kvm_client_set(esk, ec);
+ }
+ }
+
+ e_client_desk_iconify_skip_set(ec, EINA_TRUE);
+
+ eda_client->service_role = service_role; // assign the service_role
+}
+
+static void
+_desk_area_cb_client_service_role_unset(struct wl_listener *listener, void *data)
+{
+ E_Policy_Desk_Area_Private_Client *eda_client;
+ E_Client *ec;
+ int service_role;
+
+ eda_client = wl_container_of(listener, eda_client, client_service_role_unset);
+ ec = eda_client->ec;
+
+ service_role = eda_client->service_role;
+
+ if (service_role == TZSH_SRV_ROLE_INDICATOR)
+ {
+ if (ec->internal)
+ {
+ e_pixmap_win_id_del(e_client_pixmap_get(ec));
+ e_object_del(E_OBJECT(ec));
+ }
+ }
+ else if (service_role == TZSH_SRV_ROLE_SOFTKEY)
+ {
+ e_service_softkey_client_unset(ec);
+ }
+ else if (service_role == TZSH_SRV_ROLE_MAGNIFIER)
+ {
+ e_magnifier_owner_unset(ec);
+ e_magnifier_del();
+ }
+ else if (service_role == TZSH_SRV_ROLE_LAUNCHER)
+ {
+ e_service_launcher_client_unset(ec);
+ }
+}
static void
_e_policy_desk_area_configure_send(E_Client *ec, Eina_Bool edges, Eina_Bool send_size)
e_client_set_layer_listener_add(ec, &eda_client->client_layer_set);
eda_client->client_layer_get.notify = _desk_area_cb_client_layer_get;
e_client_get_layer_listener_add(ec, &eda_client->client_layer_get);
+ eda_client->client_service_role_set.notify = _desk_area_cb_client_service_role_set;
+ e_client_service_role_set_listener_add(ec, &eda_client->client_service_role_set);
+ eda_client->client_service_role_unset.notify = _desk_area_cb_client_service_role_unset;
+ e_client_service_role_unset_listener_add(ec, &eda_client->client_service_role_unset);
// e_comp_object listeners
eda_client->comp_object_lower.notify = _desk_area_cb_comp_object_lower;
wl_list_remove(&eda_client->comp_object_lower.link);
wl_list_remove(&eda_client->comp_object_raise.link);
+ wl_list_remove(&eda_client->client_service_role_unset.link);
+ wl_list_remove(&eda_client->client_service_role_set.link);
wl_list_remove(&eda_client->client_layer_get.link);
wl_list_remove(&eda_client->client_layer_set.link);
wl_list_remove(&eda_client->client_resize_end.link);