+/*
+void client_foreach_transient(Client *self, ClientForeachFunc func, void *data)
+{
+ GSList *it;
+
+ for (it = self->transients; it; it = it->next) {
+ if (!func(it->data, data)) return;
+ client_foreach_transient(it->data, func, data);
+ }
+}
+
+void client_foreach_ancestor(Client *self, ClientForeachFunc func, void *data)
+{
+ if (self->transient_for) {
+ if (self->transient_for != TRAN_GROUP) {
+ if (!func(self->transient_for, data)) return;
+ client_foreach_ancestor(self->transient_for, func, data);
+ } else {
+ GSList *it;
+
+ for (it = self->group->members; it; it = it->next)
+ if (it->data != self &&
+ ((Client*)it->data)->transient_for != TRAN_GROUP) {
+ if (!func(it->data, data)) return;
+ client_foreach_ancestor(it->data, func, data);
+ }
+ }
+ }
+}
+*/
+