void action_raiselower(union ActionData *data)
{
ObClient *c = data->client.any.c;
- GList *it;
- gboolean raise = FALSE;
-
- for (it = stacking_list; it; it = g_list_next(it)) {
- if (WINDOW_IS_CLIENT(it->data)) {
- ObClient *cit = it->data;
-
- if (cit == c) break;
- if (client_normal(cit) == client_normal(c) &&
- cit->layer == c->layer &&
- cit->frame->visible &&
- !client_search_transient(c, cit))
- {
- if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) {
- raise = TRUE;
- break;
- }
- }
- }
- }
- if (raise)
- action_raise(data);
- else
- action_lower(data);
+ client_action_start(data);
+ stacking_restack_request(c, NULL, Opposite, FALSE);
+ client_action_end(data);
}
void action_raise(union ActionData *data)
return occludes;
}
-gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
- gint detail, gboolean activate)
+void stacking_restack_request(ObClient *client, ObClient *sibling,
+ gint detail, gboolean activate)
{
switch (detail) {
case Below:
lower it to the bottom */
if (stacking_occludes(client, sibling))
stacking_lower(CLIENT_AS_WINDOW(client));
- else
- return FALSE;
break;
case Above:
ob_debug("Restack request Above for client %s sibling %s\n",
client_activate(client, FALSE, TRUE);
else
stacking_raise(CLIENT_AS_WINDOW(client));
- } else
- return FALSE;
+ }
break;
case Opposite:
ob_debug("Restack request Opposite for client %s sibling "
stacking_lower(CLIENT_AS_WINDOW(client));
break;
}
- return TRUE;
}
@param detail One of Above, Below, TopIf, BottomIf, Opposite
@param activate If TRUE, and if the window is going to be raised, it will
be activated instead
- @return false if given TopIf or BottomIf and no action was taken,
- true otherwise
See http://tronche.com/gui/x/xlib/window/configure.html for details on
how each detail works with and without a sibling.
*/
-gboolean stacking_restack_request(struct _ObClient *client,
- struct _ObClient *sibling,
- gint detail, gboolean activate);
+void stacking_restack_request(struct _ObClient *client,
+ struct _ObClient *sibling,
+ gint detail, gboolean activate);
#endif