gboolean clientIsTransientOrModalFor (Client * c1, Client * c2) { g_return_val_if_fail (c1 != NULL, FALSE); g_return_val_if_fail (c2 != NULL, FALSE); TRACE ("entering clientIsTransientOrModalFor"); return (clientIsTransientFor(c1, c2) || clientIsModalFor(c1, c2)); }
Client * clientGetModalFor (Client * c) { ScreenInfo *screen_info; Client *c2; GList *list; g_return_val_if_fail (c != NULL, NULL); TRACE ("entering clientGetModalFor"); screen_info = c->screen_info; for (list = g_list_last(screen_info->windows_stack); list; list = g_list_previous (list)) { c2 = (Client *) list->data; if (c2) { if ((c2 != c) && clientIsModalFor (c2, c)) { return c2; } } } return NULL; }
static gint clientCompareModal (gconstpointer a, gconstpointer b) { return !clientIsModalFor ((Client *) a, (Client *) b); }