diff --git a/docs/userguide b/docs/userguide index 6acd3455..5296fabd 100644 --- a/docs/userguide +++ b/docs/userguide @@ -1476,8 +1476,7 @@ between a screen edge and a window (or split container) will be the sum of outer and inner gaps. You can define gaps either globally or per workspace using the following -syntax. Note that the gaps configurations should be ordered from least specific -to most specific as some directives can overwrite others. +syntax. *Syntax*: ----------------------- diff --git a/release-notes/bugfixes/2-gaps-order b/release-notes/bugfixes/2-gaps-order new file mode 100644 index 00000000..8c3c78df --- /dev/null +++ b/release-notes/bugfixes/2-gaps-order @@ -0,0 +1 @@ +gaps: workspace gaps assignments are no longer order-dependent diff --git a/src/config_directives.c b/src/config_directives.c index 78a246dd..7f50b933 100644 --- a/src/config_directives.c +++ b/src/config_directives.c @@ -304,7 +304,7 @@ CFGFUN(gaps, const char *workspace, const char *scope, const long value) { if (workspace == NULL) config.gaps.inner = pixels; else { - gaps.inner = pixels - config.gaps.inner; + gaps.inner = pixels; create_gaps_assignment(workspace, scope, gaps); } } else if (!strcmp(scope, "outer")) { @@ -314,10 +314,10 @@ CFGFUN(gaps, const char *workspace, const char *scope, const long value) { config.gaps.bottom = pixels; config.gaps.left = pixels; } else { - gaps.top = pixels - config.gaps.top; - gaps.right = pixels - config.gaps.right; - gaps.bottom = pixels - config.gaps.bottom; - gaps.left = pixels - config.gaps.left; + gaps.top = pixels; + gaps.right = pixels; + gaps.bottom = pixels; + gaps.left = pixels; create_gaps_assignment(workspace, scope, gaps); } } else if (!strcmp(scope, "vertical")) { @@ -325,8 +325,8 @@ CFGFUN(gaps, const char *workspace, const char *scope, const long value) { config.gaps.top = pixels; config.gaps.bottom = pixels; } else { - gaps.top = pixels - config.gaps.top; - gaps.bottom = pixels - config.gaps.bottom; + gaps.top = pixels; + gaps.bottom = pixels; create_gaps_assignment(workspace, scope, gaps); } } else if (!strcmp(scope, "horizontal")) { @@ -334,36 +334,36 @@ CFGFUN(gaps, const char *workspace, const char *scope, const long value) { config.gaps.right = pixels; config.gaps.left = pixels; } else { - gaps.right = pixels - config.gaps.right; - gaps.left = pixels - config.gaps.left; + gaps.right = pixels; + gaps.left = pixels; create_gaps_assignment(workspace, scope, gaps); } } else if (!strcmp(scope, "top")) { if (workspace == NULL) config.gaps.top = pixels; else { - gaps.top = pixels - config.gaps.top; + gaps.top = pixels; create_gaps_assignment(workspace, scope, gaps); } } else if (!strcmp(scope, "right")) { if (workspace == NULL) config.gaps.right = pixels; else { - gaps.right = pixels - config.gaps.right; + gaps.right = pixels; create_gaps_assignment(workspace, scope, gaps); } } else if (!strcmp(scope, "bottom")) { if (workspace == NULL) config.gaps.bottom = pixels; else { - gaps.bottom = pixels - config.gaps.bottom; + gaps.bottom = pixels; create_gaps_assignment(workspace, scope, gaps); } } else if (!strcmp(scope, "left")) { if (workspace == NULL) config.gaps.left = pixels; else { - gaps.left = pixels - config.gaps.left; + gaps.left = pixels; create_gaps_assignment(workspace, scope, gaps); } } else { diff --git a/src/workspace.c b/src/workspace.c index 73917639..9d8fd8bd 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -151,6 +151,22 @@ Con *workspace_get(const char *num) { } } + if (gaps.inner != 0) { + gaps.inner -= config.gaps.inner; + } + if (gaps.top != 0) { + gaps.top -= config.gaps.top; + } + if (gaps.right != 0) { + gaps.right -= config.gaps.right; + } + if (gaps.bottom != 0) { + gaps.bottom -= config.gaps.bottom; + } + if (gaps.left != 0) { + gaps.left -= config.gaps.left; + } + Con *output = get_assigned_output(num, parsed_num); /* if an assignment is not found, we create this workspace on the current output */ if (!output) { diff --git a/testcases/t/319-gaps.t b/testcases/t/319-gaps.t index 66b2abee..8bb610b7 100644 --- a/testcases/t/319-gaps.t +++ b/testcases/t/319-gaps.t @@ -17,7 +17,9 @@ # Basic gaps functionality test # Ticket: #3724 -use i3test i3_config => < 0; + +my $config = <