270 |
} |
} |
271 |
|
|
272 |
Client * |
Client * |
273 |
clientGetTopMost (int layer) |
clientGetTopMost (int layer, int real) |
274 |
{ |
{ |
275 |
Window w1, w2, *wins; |
Window w1, w2, *wins; |
276 |
unsigned int i, count; |
unsigned int i, count; |
286 |
{ |
{ |
287 |
XGetWindowAttributes (dpy, wins[i], &attr); |
XGetWindowAttributes (dpy, wins[i], &attr); |
288 |
c = clientGetFromWindow (wins[i], FRAME); |
c = clientGetFromWindow (wins[i], FRAME); |
289 |
if (c && attr.map_state == IsViewable && !typeDock(c->window)) |
if (real) |
290 |
{ |
{ |
291 |
if (c->win_layer <= layer) |
if (c && attr.map_state == IsViewable) |
292 |
top = c; |
{ |
293 |
else |
if (c->win_layer <= layer) |
294 |
break; |
top = c; |
295 |
|
else |
296 |
|
break; |
297 |
|
} |
298 |
|
} |
299 |
|
else |
300 |
|
{ |
301 |
|
if (c && attr.map_state == IsViewable && !typeDock(c->window)) |
302 |
|
{ |
303 |
|
if (c->win_layer <= layer) |
304 |
|
top = c; |
305 |
|
else |
306 |
|
break; |
307 |
|
} |
308 |
} |
} |
309 |
} |
} |
310 |
if (wins) |
if (wins) |
367 |
switch (wc->stack_mode) |
switch (wc->stack_mode) |
368 |
{ |
{ |
369 |
case Above: |
case Above: |
370 |
sibling = clientGetTopMost (c->win_layer); |
if (strcmp (c->name,"MPlayer") == 0) |
371 |
|
sibling = clientGetTopMost (c->win_layer, 1); // get the real top |
372 |
|
else |
373 |
|
sibling = clientGetTopMost (c->win_layer, 0); |
374 |
if (!sibling) |
if (!sibling) |
375 |
wc->stack_mode = Below; |
wc->stack_mode = Below; |
376 |
break; |
break; |