Avoid negative outer gaps

Make sure we never let the gaps around the workspace go negative.

Fixes #4304
This commit is contained in:
Pedro Côrte-Real 2019-07-06 12:22:41 +01:00 committed by Brian Ashworth
parent 44c2fafa4f
commit 99192a92f9

View file

@ -54,21 +54,6 @@ struct sway_output *workspace_get_initial_output(const char *name) {
return root->outputs->length ? root->outputs->items[0] : root->noop_output;
}
static void prevent_invalid_outer_gaps(struct sway_workspace *ws) {
if (ws->gaps_outer.top < -ws->gaps_inner) {
ws->gaps_outer.top = -ws->gaps_inner;
}
if (ws->gaps_outer.right < -ws->gaps_inner) {
ws->gaps_outer.right = -ws->gaps_inner;
}
if (ws->gaps_outer.bottom < -ws->gaps_inner) {
ws->gaps_outer.bottom = -ws->gaps_inner;
}
if (ws->gaps_outer.left < -ws->gaps_inner) {
ws->gaps_outer.left = -ws->gaps_inner;
}
}
struct sway_workspace *workspace_create(struct sway_output *output,
const char *name) {
if (output == NULL) {
@ -111,9 +96,6 @@ struct sway_workspace *workspace_create(struct sway_output *output,
if (wsc->gaps_inner != INT_MIN) {
ws->gaps_inner = wsc->gaps_inner;
}
// Since default outer gaps can be smaller than the negation of
// workspace specific inner gaps, check outer gaps again
prevent_invalid_outer_gaps(ws);
// Add output priorities
for (int i = 0; i < wsc->outputs->length; ++i) {
@ -718,10 +700,11 @@ void workspace_add_gaps(struct sway_workspace *ws) {
}
ws->current_gaps = ws->gaps_outer;
ws->current_gaps.top += ws->gaps_inner;
ws->current_gaps.right += ws->gaps_inner;
ws->current_gaps.bottom += ws->gaps_inner;
ws->current_gaps.left += ws->gaps_inner;
// Add inner gaps and make sure we don't turn out negative
ws->current_gaps.top = fmax(0, ws->current_gaps.top + ws->gaps_inner);
ws->current_gaps.right = fmax(0, ws->current_gaps.right + ws->gaps_inner);
ws->current_gaps.bottom = fmax(0, ws->current_gaps.bottom + ws->gaps_inner);
ws->current_gaps.left = fmax(0, ws->current_gaps.left + ws->gaps_inner);
ws->x += ws->current_gaps.left;
ws->y += ws->current_gaps.top;