From 540d01fd679134ef72780b14c085d96ba47f3ff9 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Tue, 17 Nov 2015 13:50:59 +0900 Subject: [PATCH] e_client: added expansion iconify feature Change-Id: I4a1a0decd765d275169943e8f41222666bd89ec9 --- src/bin/e_client.c | 25 +++++++++++++++++++++++-- src/bin/e_client.h | 7 +++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 562cf849ee..70124af5bb 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -3067,6 +3067,10 @@ e_client_new(E_Comp *c EINA_UNUSED, E_Pixmap *cp, int first_map, int internal) ec->new_client = 1; ec->comp->new_clients++; + ec->exp_iconify.by_visibility = 0; + ec->exp_iconify.not_raise = 0; + ec->exp_iconify.use_resize = 0; + if (!_e_client_hook_call(E_CLIENT_HOOK_NEW_CLIENT, ec)) { /* delete the above allocated object */ @@ -4543,6 +4547,11 @@ e_client_iconify(E_Client *ec) { E_OBJECT_CHECK(ec); E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE); + + ELOGF("TZVIS", "ICONIFY |not_raise:%d |by_vis:%d", + ec->pixmap, ec, (unsigned int)ec->exp_iconify.not_raise, + ec->exp_iconify.by_visibility); + if (ec->shading || ec->iconic) return; ec->iconic = 1; ec->want_focus = ec->take_focus = 0; @@ -4562,12 +4571,18 @@ e_client_iconify(E_Client *ec) if (e_config->transient.iconify) { + Eina_Bool not_raise; E_Client *child; Eina_List *list = eina_list_clone(ec->transients); + not_raise = ec->exp_iconify.not_raise; EINA_LIST_FREE(list, child) - e_client_iconify(child); + { + child->exp_iconify.not_raise = not_raise; + e_client_iconify(child); + } } + ec->exp_iconify.not_raise = EINA_FALSE; e_remember_update(ec); } @@ -4578,10 +4593,16 @@ e_client_uniconify(E_Client *ec) E_OBJECT_CHECK(ec); E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE); + + ELOGF("TZVIS", "UNICONIFY|not_raise:%d |by_vis:%d", + ec->pixmap, ec, (unsigned int)ec->exp_iconify.not_raise, + ec->exp_iconify.by_visibility); + if (ec->shading || (!ec->iconic)) return; desk = e_desk_current_get(ec->desk->zone); e_client_desk_set(ec, desk); - evas_object_raise(ec->frame); + if (!ec->exp_iconify.not_raise) + evas_object_raise(ec->frame); evas_object_show(ec->frame); e_client_comp_hidden_set(ec, 0); ec->deskshow = ec->iconic = 0; diff --git a/src/bin/e_client.h b/src/bin/e_client.h index c88ac52c62..3c5d7e89c0 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -804,6 +804,13 @@ struct E_Client #endif int client_type; //e_client_type + + struct + { + unsigned char by_visibility : 1; + unsigned char not_raise : 1; + unsigned char use_resize : 1; + } exp_iconify; }; #define e_client_focus_policy_click(ec) \ -- 2.34.1