mirror of
https://github.com/swaywm/sway.git
synced 2024-12-29 00:16:22 +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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue