+
+static void
+_e_border_deiconify_approve_send(E_Border *bd, E_Border *bd_ancestor)
+{
+ if (!bd || !bd_ancestor) return;
+
+ if (e_config->deiconify_approve)
+ {
+ if (e_config->transient.iconify)
+ {
+ Eina_List *l;
+ E_Border *child;
+ Eina_List *list = _e_border_sub_borders_new(bd);
+ EINA_LIST_FOREACH(list, l, child)
+ {
+#ifdef _F_ZONE_WINDOW_ROTATION_
+ if ((e_config->wm_win_rotation) &&
+ ((child->client.e.state.rot.support) ||
+ (child->client.e.state.rot.app_set)))
+ {
+ ELB(ELBT_ROT, "CHECK_DEICONIFY CHILD", child->client.win);
+ _e_border_rotation_check(child);
+ }
+#endif
+ _e_border_deiconify_approve_send(child, bd_ancestor);
+ if (child->client.e.state.deiconify_approve.support)
+ {
+ ELBF(ELBT_BD, 0, child->client.win,
+ "SEND DEICONIFY_APPROVE. ancestor:%x", bd_ancestor->client.win);
+
+ ecore_x_client_message32_send(child->client.win,
+ ECORE_X_ATOM_E_DEICONIFY_APPROVE,
+ ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
+ child->client.win, 0, 0, 0, 0);
+ child->client.e.state.deiconify_approve.ancestor = bd_ancestor;
+ bd_ancestor->client.e.state.deiconify_approve.req_list = eina_list_append(bd_ancestor->client.e.state.deiconify_approve.req_list, child);
+ }
+ }
+ eina_list_free(list);
+ }
+ }
+}
+
+static void
+_e_border_deiconify_approve_send_all_transient(E_Border *bd)
+{
+ E_Border *bd_ancestor;
+ bd_ancestor = bd;
+
+ if (e_config->deiconify_approve)
+ {
+#ifdef _F_ZONE_WINDOW_ROTATION_
+ if ((e_config->wm_win_rotation) &&
+ ((bd->client.e.state.rot.support) ||
+ (bd->client.e.state.rot.app_set)))
+ {
+ ELB(ELBT_ROT, "CHECK_DEICONIFY", bd->client.win);
+ _e_border_rotation_check(bd);
+ }
+#endif
+
+ if (e_config->transient.iconify)
+ {
+ _e_border_deiconify_approve_send(bd, bd_ancestor);
+ }
+
+ if (bd->client.e.state.deiconify_approve.support)
+ {
+ ELBF(ELBT_BD, 0, bd->client.win,
+ "SEND DEICONIFY_APPROVE.. ancestor:%x", bd_ancestor->client.win);
+
+ ecore_x_client_message32_send(bd->client.win,
+ ECORE_X_ATOM_E_DEICONIFY_APPROVE,
+ ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
+ bd->client.win, 0, 0, 0, 0);
+ bd->client.e.state.deiconify_approve.wait_timer = ecore_timer_add(e_config->deiconify_timeout, _e_border_uniconify_timeout, bd);
+ }
+ }
+}