e_client: added expansion iconify feature 90/51890/3
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 17 Nov 2015 04:50:59 +0000 (13:50 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 24 Nov 2015 07:45:10 +0000 (23:45 -0800)
Change-Id: I4a1a0decd765d275169943e8f41222666bd89ec9

src/bin/e_client.c
src/bin/e_client.h

index 562cf849ee3413acdd97d1edc282e03caea1d149..70124af5bbef0de9d269765a129d3317b0f70837 100644 (file)
@@ -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;
index c88ac52c627c1c886e661763a76c8413897546fe..3c5d7e89c00ea4cc8fdf72e666996d62c44463c4 100644 (file)
@@ -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) \