otherwise, the desktop is changed to where the client lives.
@param user If true, then a user action is what requested the activation;
otherwise, it means an application requested it on its own
+ @param timestamp The time at which the activate was requested.
*/
-void client_activate(ObClient *self, gboolean here, gboolean user);
+void client_activate(ObClient *self, gboolean here, gboolean user, Time time);
/*! Calculates the stacking layer for the client window */
void client_calc_layer(ObClient *self);
*/
ObClient *client_search_modal_child(ObClient *self);
-ObClient *client_search_top_transient(ObClient *self);
+/*! Returns a list of top-level windows which this is a transient for.
+ It will only contain more than 1 element if the client is transient for its
+ group.
+*/
+GSList *client_search_all_top_parents(ObClient *self);
+
+/*! Returns a window's top level parent. This only counts direct parents,
+ not groups if it is transient for its group.
+*/
+ObClient *client_search_top_parent(ObClient *self);
+
+/*! Is one client a direct child of another (i.e. not through the group.) */
+gboolean client_is_direct_child(ObClient *parent, ObClient *child);
/*! Search for a parent of a client. This only searches up *ONE LEVEL*, and
returns the searched for parent if it is a parent, or NULL if not. */