From: Doyoun Kang Date: Wed, 21 Jun 2017 09:56:35 +0000 (+0900) Subject: e_client/e_comp: add new layer for CURSOR X-Git-Tag: submit/tizen_3.0/20170622.052758^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b9f0ee1a56bfe2e204389dbcbb9e086b1ee7692e;p=platform%2Fupstream%2Fenlightenment.git e_client/e_comp: add new layer for CURSOR Change-Id: I659db8f88bcc3220553486825abe59e3d7ef2721 --- diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 55b9e1d7fd..ac61e32db7 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -4459,11 +4459,11 @@ e_client_above_get(const E_Client *ec) return ec2; } } - if (ec->layer == E_LAYER_CLIENT_ALERT) return NULL; + if (ec->layer == E_LAYER_CLIENT_CURSOR) return NULL; if (e_comp_canvas_client_layer_map(ec->layer) == 9999) return NULL; /* go up the layers until we find one */ - for (x = e_comp_canvas_layer_map(ec->layer) + 1; x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); x++) + for (x = e_comp_canvas_layer_map(ec->layer) + 1; x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); x++) { if (!e_comp->layers[x].clients) continue; EINA_INLIST_FOREACH(e_comp->layers[x].clients, ec2) @@ -4536,8 +4536,7 @@ E_API E_Client * e_client_bottom_get(void) { unsigned int x; - - for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); x++) + for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x <= e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); x++) { E_Client *ec2; @@ -4553,8 +4552,7 @@ E_API E_Client * e_client_top_get(void) { unsigned int x; - - for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); x >= e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x--) + for (x = e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); x >= e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x--) { E_Client *ec2; diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index a2371da880..6f5d7d8879 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1833,6 +1833,8 @@ e_comp_layer_name_get(unsigned int layer, char *buff, int buff_size) case E_LAYER_CLIENT_NOTIFICATION_TOP: strncpy(buff, "E_LAYER_CLIENT_NOTIFICATION_TOP", buff_size); break; case E_LAYER_CLIENT_ALERT_LOW: strncpy(buff, "E_LAYER_CLIENT_ALERT_LOW", buff_size); break; case E_LAYER_CLIENT_ALERT: strncpy(buff, "E_LAYER_CLIENT_ALERT", buff_size); break; + case E_LAYER_CLIENT_ALERT_HIGH: strncpy(buff, "E_LAYER_CLIENT_ALERT_HIGH", buff_size); break; + case E_LAYER_CLIENT_CURSOR: strncpy(buff, "E_LAYER_CLIENT_CURSOR", buff_size); break; case E_LAYER_POPUP: strncpy(buff, "E_LAYER_POPUP", buff_size); break; case E_LAYER_EFFECT: strncpy(buff, "E_LAYER_EFFECT", buff_size); break; case E_LAYER_MENU: strncpy(buff, "E_LAYER_MENU", buff_size); break; diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index da43b157d0..c999e40560 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -6,8 +6,8 @@ typedef struct _E_Comp_Connected_Client_Info E_Comp_Connected_Client_Info; # define E_COMP_TYPE (int) 0xE0b01003 -# define E_LAYER_COUNT 26 -# define E_CLIENT_LAYER_COUNT 17 +# define E_LAYER_COUNT 28 +# define E_CLIENT_LAYER_COUNT 19 typedef enum _E_Layer { @@ -32,6 +32,8 @@ typedef enum _E_Layer E_LAYER_CLIENT_NOTIFICATION_TOP = 800, E_LAYER_CLIENT_ALERT_LOW = 850, E_LAYER_CLIENT_ALERT = 900, + E_LAYER_CLIENT_ALERT_HIGH = 950, + E_LAYER_CLIENT_CURSOR = 990, E_LAYER_POPUP = 999, // popups E_LAYER_EFFECT = 1999, E_LAYER_MENU = 5000, // menus diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index c0049ae5eb..3a31fb8f23 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -526,7 +526,7 @@ e_comp_canvas_fake_layers_init(void) unsigned int layer; /* init layers */ - for (layer = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); layer <= e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT); layer++) + for (layer = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); layer <= e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR); layer++) { Evas_Object *o2; @@ -572,11 +572,13 @@ e_comp_canvas_layer_map_to(unsigned int layer) case 18: return E_LAYER_CLIENT_NOTIFICATION_TOP; case 19: return E_LAYER_CLIENT_ALERT_LOW; case 20: return E_LAYER_CLIENT_ALERT; - case 21: return E_LAYER_POPUP; - case 22: return E_LAYER_EFFECT; - case 23: return E_LAYER_MENU; - case 24: return E_LAYER_DESKLOCK; - case 25: return E_LAYER_MAX; + case 21: return E_LAYER_CLIENT_ALERT_HIGH; + case 22: return E_LAYER_CLIENT_CURSOR; + case 23: return E_LAYER_POPUP; + case 24: return E_LAYER_EFFECT; + case 25: return E_LAYER_MENU; + case 26: return E_LAYER_DESKLOCK; + case 27: return E_LAYER_MAX; default: break; } return -INT_MAX; @@ -608,11 +610,13 @@ e_comp_canvas_layer_map(E_Layer layer) case E_LAYER_CLIENT_NOTIFICATION_TOP: return 18; case E_LAYER_CLIENT_ALERT_LOW: return 19; case E_LAYER_CLIENT_ALERT: return 20; - case E_LAYER_POPUP: return 21; - case E_LAYER_EFFECT: return 22; - case E_LAYER_MENU: return 23; - case E_LAYER_DESKLOCK: return 24; - case E_LAYER_MAX: return 25; + case E_LAYER_CLIENT_ALERT_HIGH: return 21; + case E_LAYER_CLIENT_CURSOR: return 22; + case E_LAYER_POPUP: return 23; + case E_LAYER_EFFECT: return 24; + case E_LAYER_MENU: return 25; + case E_LAYER_DESKLOCK: return 26; + case E_LAYER_MAX: return 27; default: break; } @@ -643,6 +647,8 @@ e_comp_canvas_client_layer_map(E_Layer layer) case E_LAYER_CLIENT_NOTIFICATION_TOP: return 14; case E_LAYER_CLIENT_ALERT_LOW: return 15; case E_LAYER_CLIENT_ALERT: return 16; + case E_LAYER_CLIENT_ALERT_HIGH: return 17; + case E_LAYER_CLIENT_CURSOR: return 18; default: break; } return 9999; @@ -670,7 +676,9 @@ e_comp_canvas_client_layer_map_nearest(int layer) LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_HIGH); LAYER_MAP(E_LAYER_CLIENT_NOTIFICATION_TOP); LAYER_MAP(E_LAYER_CLIENT_ALERT_LOW); - return E_LAYER_CLIENT_ALERT; + LAYER_MAP(E_LAYER_CLIENT_ALERT); + LAYER_MAP(E_LAYER_CLIENT_ALERT_HIGH); + return E_LAYER_CLIENT_CURSOR; } E_API void diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 1be4bc68e1..8c37564224 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -1690,7 +1690,7 @@ _e_comp_intercept_stack_helper(E_Comp_Object *cw, Evas_Object *stack, E_Comp_Obj /* reached the top client layer somehow * use top client object */ - o = e_comp->layers[e_comp_canvas_layer_map(E_LAYER_CLIENT_ALERT)].obj; + o = e_comp->layers[e_comp_canvas_layer_map(E_LAYER_CLIENT_CURSOR)].obj; } if (!o) /* top client layer window hasn't been stacked yet. this probably shouldn't happen? diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c index 03a1b11f5c..8a250da710 100644 --- a/src/bin/e_comp_wl_input.c +++ b/src/bin/e_comp_wl_input.c @@ -117,7 +117,8 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou ec->comp_data->shell.configure = _e_comp_wl_input_pointer_configure; ec->comp_data->shell.map = _e_comp_wl_input_pointer_map; - evas_object_layer_set(ec->frame, E_LAYER_MAX - 1); + evas_object_layer_set(ec->frame, E_LAYER_CLIENT_CURSOR); + ec->layer = E_LAYER_CLIENT_CURSOR; ec->is_cursor = EINA_TRUE; } diff --git a/src/bin/e_info_server.c b/src/bin/e_info_server.c index 82d14026e5..0fd4778489 100644 --- a/src/bin/e_info_server.c +++ b/src/bin/e_info_server.c @@ -1527,6 +1527,8 @@ _e_comp_layer_idx_get(const char *layer_name) if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_NOTIFICATION_TOP)) return E_LAYER_CLIENT_NOTIFICATION_TOP; if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_ALERT_LOW)) return E_LAYER_CLIENT_ALERT_LOW; if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_ALERT)) return E_LAYER_CLIENT_ALERT; + if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_ALERT_HIGH)) return E_LAYER_CLIENT_ALERT_HIGH; + if (!_check_layer_idx(layer_name, E_LAYER_CLIENT_CURSOR)) return E_LAYER_CLIENT_CURSOR; if (!_check_layer_idx(layer_name, E_LAYER_POPUP)) return E_LAYER_POPUP; if (!_check_layer_idx(layer_name, E_LAYER_EFFECT)) return E_LAYER_EFFECT; if (!_check_layer_idx(layer_name, E_LAYER_MENU)) return E_LAYER_MENU; diff --git a/src/bin/e_policy_wl.c b/src/bin/e_policy_wl.c index f6ee66376a..199cb3567d 100644 --- a/src/bin/e_policy_wl.c +++ b/src/bin/e_policy_wl.c @@ -1670,6 +1670,8 @@ _tzpol_iface_cb_role_set(struct wl_client *client EINA_UNUSED, struct wl_resourc else if (!e_util_strcmp("wl_pointer-cursor", role)) { ELOGF("TZPOL", "Set CURSOR role", ec->pixmap, ec); + evas_object_layer_set(ec->frame, E_LAYER_CLIENT_CURSOR); + ec->layer = E_LAYER_CLIENT_CURSOR; ec->is_cursor = EINA_TRUE; } }