diff --git a/src/client.c b/src/client.c index 1dbf08a6a6aa2e94f4883fe21a2004a53ee67437..c25b6b5d80486ecd72f1f775977021e54f8c24ad 100644 --- a/src/client.c +++ b/src/client.c @@ -3252,8 +3252,6 @@ clientFill (Client * c, int fill_type) /* Fill horizontally */ if (fill_type & CLIENT_FILL_HORIZ) { - mask |= CWX | CWWidth; - /* * check if the neigbour client (c2) is located * east or west of our client. @@ -3300,8 +3298,6 @@ clientFill (Client * c, int fill_type) /* Fill vertically */ if (fill_type & CLIENT_FILL_VERT) { - mask |= CWY | CWHeight; - /* check if the neigbour client (c2) is located * north or south of our client. */ @@ -3367,16 +3363,19 @@ clientFill (Client * c, int fill_type) if ((fill_type & CLIENT_FILL) == CLIENT_FILL) { + mask = CWX | CWY | CWHeight | CWWidth; /* Adjust size to the largest size available, not covering struts */ clientMaxSpace (screen_info, &full_x, &full_y, &full_w, &full_h); } else if (fill_type & CLIENT_FILL_VERT) { + mask = CWY | CWHeight; /* Adjust size to the tallest size available, for the current horizontal position/width */ clientMaxSpace (screen_info, &tmp_x, &full_y, &tmp_w, &full_h); } else if (fill_type & CLIENT_FILL_HORIZ) { + mask = CWX | CWWidth; /* Adjust size to the widest size available, for the current vertical position/height */ clientMaxSpace (screen_info, &full_x, &tmp_y, &full_w, &tmp_h); } @@ -3396,11 +3395,11 @@ clientFill (Client * c, int fill_type) if (west_neighbour) { - wc.width = frameX(west_neighbour) - frameRight(c) - wc.x; + wc.width = full_x + frameX(west_neighbour) - frameRight(c) - wc.x; } else { - wc.width = full_w - frameRight(c) - wc.x; + wc.width = full_x + full_w - frameRight(c) - wc.x; } if (north_neighbour) @@ -3414,13 +3413,14 @@ clientFill (Client * c, int fill_type) if (south_neighbour) { - wc.height = frameY(south_neighbour) - frameBottom(c) - wc.y; + wc.height = full_y + frameY(south_neighbour) - frameBottom(c) - wc.y; } else { - wc.height = full_h - frameBottom(c) - wc.y; + wc.height = full_y + full_h - frameBottom(c) - wc.y; } + TRACE ("Fill size request: (%d,%d) %dx%d", wc.x, wc.y, wc.width, wc.height); if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MANAGED)) { /*