1467
1467
int min_x, min_y, max_bottom, max_right;
1468
const RLayout *layout = Scr->BorderedLayout;
1469
1470
area = RAreaNew(tmp_win->frame_x, tmp_win->frame_y,
1470
1471
(int)tmp_win->frame_width,
1471
1472
(int)tmp_win->frame_height);
1473
RLayoutFindTopBottomEdges(Scr->BorderedLayout, &area,
1475
// Hack: windows with EWMH struts defined are trying to
1476
// reserve a bit of the screen for themselves. We currently
1477
// do that by hacking strut'ed space into the BorderedLayout,
1478
// which is a bogus way of doing things. But it also means
1479
// that here we're forcing the windows to be outside their
1480
// own struts, which is nonsensical.
1482
// Hack around that by making strut'd windows just use
1483
// Layout, rather than BorderedLayout. This is Wrong(tm)
1484
// because the whole point of BorderedLayout is space
1485
// reservation by the user, which we'd now be ignoring. Also
1486
// just because a window has its own struts doesn't mean it
1487
// should get to ignore everyone else's struts too. However,
1488
// this is at least consistent with pre-4.1.0 behavior, so
1489
// it's not a _new_ bug. And forcing windows outside their
1490
// own reservation is way stupider...
1491
if(tmp_win->ewmhFlags & EWMH_HAS_STRUT) {
1492
layout = Scr->Layout;
1496
RLayoutFindTopBottomEdges(layout, &area,
1474
1497
&min_y, &max_bottom);
1475
RLayoutFindLeftRightEdges(Scr->BorderedLayout, &area,
1498
RLayoutFindLeftRightEdges(layout, &area,
1476
1499
&min_x, &max_right);
1478
1501
// These conditions would only be true if the window was