(un)iconify subsurfaces if ec has them 19/54319/5 accepted/tizen/mobile/20151218.085155 accepted/tizen/tv/20151218.085000 accepted/tizen/wearable/20151218.085114 submit/tizen/20151218.045258
authorBoram Park <boram1288.park@samsung.com>
Tue, 15 Dec 2015 01:42:14 +0000 (10:42 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Thu, 17 Dec 2015 05:25:02 +0000 (21:25 -0800)
Change-Id: I08fe36dcfb77e683afcf21c9fcf6766b9107af01

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

index 03071d4..362ae1c 100644 (file)
@@ -93,6 +93,8 @@ static Eina_Inlist *_e_client_hooks[] =
    [E_CLIENT_HOOK_NEW_CLIENT_POST] = NULL,
 #endif
    [E_CLIENT_HOOK_EVAL_VISIBILITY] = NULL,
+   [E_CLIENT_HOOK_ICONIFY] = NULL,
+   [E_CLIENT_HOOK_UNICONIFY] = NULL,
 };
 
 ///////////////////////////////////////////
@@ -4596,6 +4598,9 @@ e_client_iconify(E_Client *ec)
         EINA_LIST_FREE(list, child)
           e_client_iconify(child);
      }
+
+   _e_client_hook_call(E_CLIENT_HOOK_ICONIFY, ec);
+
    e_remember_update(ec);
 }
 
@@ -4636,6 +4641,9 @@ e_client_uniconify(E_Client *ec)
              e_client_uniconify(child);
           }
      }
+
+   _e_client_hook_call(E_CLIENT_HOOK_UNICONIFY, ec);
+
    ec->exp_iconify.not_raise = 0;
    ec->exp_iconify.by_client = 0;
    e_remember_update(ec);
index e261bf2..de9dd7e 100644 (file)
@@ -214,6 +214,8 @@ typedef enum _E_Client_Hook_Point
    E_CLIENT_HOOK_NEW_CLIENT_POST,
 #endif
    E_CLIENT_HOOK_EVAL_VISIBILITY,
+   E_CLIENT_HOOK_ICONIFY,
+   E_CLIENT_HOOK_UNICONIFY,
    E_CLIENT_HOOK_LAST,
 } E_Client_Hook_Point;
 
index b04b434..e3e2829 100644 (file)
@@ -3513,6 +3513,36 @@ _e_comp_wl_client_cb_move_end(void *data EINA_UNUSED, E_Client *ec)
 }
 
 static void
+_e_comp_wl_client_cb_iconify(void *data EINA_UNUSED, E_Client *ec)
+{
+   E_Client *subc;
+   Eina_List *l;
+
+   if (e_object_is_del(E_OBJECT(ec))) return;
+   if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return;
+
+   EINA_LIST_FOREACH(ec->comp_data->sub.list, l, subc)
+     e_client_iconify(subc);
+   EINA_LIST_FOREACH(ec->comp_data->sub.below_list, l, subc)
+     e_client_iconify(subc);
+}
+
+static void
+_e_comp_wl_client_cb_uniconify(void *data EINA_UNUSED, E_Client *ec)
+{
+   E_Client *subc;
+   Eina_List *l;
+
+   if (e_object_is_del(E_OBJECT(ec))) return;
+   if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return;
+
+   EINA_LIST_FOREACH(ec->comp_data->sub.list, l, subc)
+     e_client_uniconify(subc);
+   EINA_LIST_FOREACH(ec->comp_data->sub.below_list, l, subc)
+     e_client_uniconify(subc);
+}
+
+static void
 _e_comp_wl_cb_output_unbind(struct wl_resource *resource)
 {
    E_Comp_Wl_Output *output;
@@ -3943,6 +3973,8 @@ e_comp_wl_init(void)
    e_client_hook_add(E_CLIENT_HOOK_RESIZE_BEGIN,         _e_comp_wl_client_cb_resize_begin, NULL);
    e_client_hook_add(E_CLIENT_HOOK_RESIZE_END,           _e_comp_wl_client_cb_resize_end,   NULL);
    e_client_hook_add(E_CLIENT_HOOK_MOVE_END,             _e_comp_wl_client_cb_move_end,     NULL);
+   e_client_hook_add(E_CLIENT_HOOK_ICONIFY,              _e_comp_wl_client_cb_iconify,    NULL);
+   e_client_hook_add(E_CLIENT_HOOK_UNICONIFY,            _e_comp_wl_client_cb_uniconify,    NULL);
 
    _last_event_time = ecore_loop_time_get();