rivertile: fix code to disallow 0 main count

Also document this limit
This commit is contained in:
Isaac Freund 2023-01-06 17:47:54 +01:00
parent 030f7efd4f
commit c479525ab8
No known key found for this signature in database
GPG Key ID: 86DED400DDFD7A11
2 changed files with 10 additions and 10 deletions

View File

@ -54,6 +54,7 @@ These commands may be sent to rivertile at runtime with the help of
Set or modify the number of views in the main area of the layout. If Set or modify the number of views in the main area of the layout. If
_value_ is prefixed by a +/- sign, _value_ is added/subtracted from the _value_ is prefixed by a +/- sign, _value_ is added/subtracted from the
current count. If there is no sign, the main count is set to _value_. current count. If there is no sign, the main count is set to _value_.
Note that the main count cannot be decreased below 1.
*main-ratio* _value_ *main-ratio* _value_
Set or modify the ratio of the main area to total layout area. If Set or modify the ratio of the main area to total layout area. If

View File

@ -173,9 +173,11 @@ const Output = struct {
'+' => output.main_count +|= @intCast(u31, arg), '+' => output.main_count +|= @intCast(u31, arg),
'-' => { '-' => {
const result = output.main_count +| arg; const result = output.main_count +| arg;
if (result >= 0) output.main_count = @intCast(u31, result); if (result >= 1) output.main_count = @intCast(u31, result);
},
else => {
if (arg >= 1) output.main_count = @intCast(u31, arg);
}, },
else => output.main_count = @intCast(u31, arg),
} }
}, },
.@"main-ratio" => { .@"main-ratio" => {
@ -194,7 +196,9 @@ const Output = struct {
}, },
.layout_demand => |ev| { .layout_demand => |ev| {
const main_count = math.clamp(output.main_count, 1, @truncate(u31, ev.view_count)); assert(ev.view_count > 0);
const main_count = math.min(output.main_count, @truncate(u31, ev.view_count));
const secondary_count = @truncate(u31, ev.view_count) -| main_count; const secondary_count = @truncate(u31, ev.view_count) -| main_count;
const usable_width = switch (output.main_location) { const usable_width = switch (output.main_location) {
@ -216,7 +220,7 @@ const Output = struct {
var secondary_height: u31 = undefined; var secondary_height: u31 = undefined;
var secondary_height_rem: u31 = undefined; var secondary_height_rem: u31 = undefined;
if (main_count > 0 and secondary_count > 0) { if (secondary_count > 0) {
main_width = @floatToInt(u31, output.main_ratio * @intToFloat(f64, usable_width)); main_width = @floatToInt(u31, output.main_ratio * @intToFloat(f64, usable_width));
main_height = usable_height / main_count; main_height = usable_height / main_count;
main_height_rem = usable_height % main_count; main_height_rem = usable_height % main_count;
@ -224,15 +228,10 @@ const Output = struct {
secondary_width = usable_width - main_width; secondary_width = usable_width - main_width;
secondary_height = usable_height / secondary_count; secondary_height = usable_height / secondary_count;
secondary_height_rem = usable_height % secondary_count; secondary_height_rem = usable_height % secondary_count;
} else if (main_count > 0) { } else {
main_width = usable_width; main_width = usable_width;
main_height = usable_height / main_count; main_height = usable_height / main_count;
main_height_rem = usable_height % main_count; main_height_rem = usable_height % main_count;
} else if (secondary_width > 0) {
main_width = 0;
secondary_width = usable_width;
secondary_height = usable_height / secondary_count;
secondary_height_rem = usable_height % secondary_count;
} }
var i: u31 = 0; var i: u31 = 0;