mirror of
https://github.com/swaywm/sway.git
synced 2025-01-02 10:26:42 +01:00
Avoid negative outer gaps
Make sure we never let the gaps around the workspace go negative. Fixes #4304
This commit is contained in:
parent
44c2fafa4f
commit
99192a92f9
1 changed files with 5 additions and 22 deletions
|
@ -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;
|
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,
|
struct sway_workspace *workspace_create(struct sway_output *output,
|
||||||
const char *name) {
|
const char *name) {
|
||||||
if (output == NULL) {
|
if (output == NULL) {
|
||||||
|
@ -111,9 +96,6 @@ struct sway_workspace *workspace_create(struct sway_output *output,
|
||||||
if (wsc->gaps_inner != INT_MIN) {
|
if (wsc->gaps_inner != INT_MIN) {
|
||||||
ws->gaps_inner = wsc->gaps_inner;
|
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
|
// Add output priorities
|
||||||
for (int i = 0; i < wsc->outputs->length; ++i) {
|
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 = ws->gaps_outer;
|
||||||
ws->current_gaps.top += ws->gaps_inner;
|
// Add inner gaps and make sure we don't turn out negative
|
||||||
ws->current_gaps.right += ws->gaps_inner;
|
ws->current_gaps.top = fmax(0, ws->current_gaps.top + ws->gaps_inner);
|
||||||
ws->current_gaps.bottom += ws->gaps_inner;
|
ws->current_gaps.right = fmax(0, ws->current_gaps.right + ws->gaps_inner);
|
||||||
ws->current_gaps.left += 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->x += ws->current_gaps.left;
|
||||||
ws->y += ws->current_gaps.top;
|
ws->y += ws->current_gaps.top;
|
||||||
|
|
Loading…
Reference in a new issue