make the raiselower action smarter
This commit is contained in:
parent
faeadd74d4
commit
ca8a3ac7bf
1 changed files with 21 additions and 5 deletions
|
@ -774,13 +774,29 @@ void action_iconify(union ActionData *data)
|
||||||
|
|
||||||
void action_raiselower(union ActionData *data)
|
void action_raiselower(union ActionData *data)
|
||||||
{
|
{
|
||||||
if (data->client.c) {
|
ObClient *c = data->client.c;
|
||||||
if (data->client.c->frame->obscured)
|
GList *it;
|
||||||
stacking_raise(CLIENT_AS_WINDOW(data->client.c));
|
gboolean raise = FALSE;
|
||||||
else
|
|
||||||
stacking_lower(CLIENT_AS_WINDOW(data->client.c));
|
if (!c) return;
|
||||||
|
|
||||||
|
for (it = stacking_list; it; it = g_list_next(it)) {
|
||||||
|
ObClient *cit = it->data;
|
||||||
|
|
||||||
|
if (cit == c) break;
|
||||||
|
if (client_normal(cit) && cit->layer == c->layer) {
|
||||||
|
if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) {
|
||||||
|
raise = TRUE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (raise)
|
||||||
|
stacking_raise(CLIENT_AS_WINDOW(c));
|
||||||
|
else
|
||||||
|
stacking_lower(CLIENT_AS_WINDOW(c));
|
||||||
|
}
|
||||||
|
|
||||||
void action_raise(union ActionData *data)
|
void action_raise(union ActionData *data)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue