if (!ec) return;
evas_object_lower(ec->frame);
}
+
+static Eina_Bool
+_e_client_surface_tree_foreach_helper(E_Client *ec, E_Client_Surface_Tree_Foreach func, void *data)
+{
+ E_Client *subc;
+ Eina_List *l, *ll;
+ Eina_Bool res = EINA_TRUE;
+
+ if ((e_object_is_del(E_OBJECT(ec))) || (!ec->comp_data))
+ return res;
+
+ EINA_LIST_FOREACH_SAFE(ec->comp_data->sub.below_list, l, ll, subc)
+ {
+ res = _e_client_surface_tree_foreach_helper(subc, func, data);
+ if (!res)
+ break;
+ }
+
+ if (res)
+ {
+ res = func(data, ec);
+ if (res)
+ {
+ EINA_LIST_FOREACH_SAFE(ec->comp_data->sub.list, l, ll, subc)
+ {
+ res = _e_client_surface_tree_foreach_helper(subc,
+ func,
+ data);
+ if (!res)
+ break;
+ }
+ }
+ }
+
+ return res;
+}
+
+EINTERN void
+e_client_surface_tree_foreach(E_Client *ec, E_Client_Surface_Tree_Foreach func, void *data)
+{
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+ EINA_SAFETY_ON_NULL_RETURN(func);
+
+ _e_client_surface_tree_foreach_helper(ec, func, data);
+}
typedef void (*E_Client_Hook_Cb)(void *data, E_Client *ec);
typedef Eina_Bool (*E_Client_Intercept_Hook_Cb)(void *data, E_Client *ec);
typedef void (*E_Client_Layout_Cb)(void);
+typedef Eina_Bool (*E_Client_Surface_Tree_Foreach)(void *data, E_Client *ec);
#else
#define E_CLIENT_TYPE (int)0xE0b01002
E_API void e_client_raise(E_Client *ec);
E_API void e_client_lower(E_Client *ec);
+EINTERN void e_client_surface_tree_foreach(E_Client *ec, E_Client_Surface_Tree_Foreach func, void *data);
+
/**
* Move window to coordinates that do not account client decorations yet.
*