git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit906a979dd7563f3bc42697b1d167fb0675cd6d24
parentce9ea46511
authorLeon Henrik Plickat <[email protected]>
date2021-05-15 17:24
rivertile: clamp main_amount

 rivertile/main.zig | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/rivertile/main.zig b/rivertile/main.zig
index 4464e84..d2c88ac 100644
--- a/rivertile/main.zig
+++ b/rivertile/main.zig
@@ -165,8 +165,9 @@ const Output = struct {
             },
 
             .layout_demand => |ev| {
-                const secondary_count = if (ev.view_count > output.main_count)
-                    ev.view_count - output.main_count
+                const main_count = math.clamp(output.main_count, 1, ev.view_count);
+                const secondary_count = if (ev.view_count > main_count)
+                    ev.view_count - main_count
                 else
                     0;
 
@@ -189,18 +190,18 @@ const Output = struct {
                 var secondary_height: u32 = undefined;
                 var secondary_height_rem: u32 = undefined;
 
-                if (output.main_count > 0 and secondary_count > 0) {
+                if (main_count > 0 and secondary_count > 0) {
                     main_width = @floatToInt(u32, output.main_factor * @intToFloat(f64, usable_width));
-                    main_height = usable_height / output.main_count;
-                    main_height_rem = usable_height % output.main_count;
+                    main_height = usable_height / main_count;
+                    main_height_rem = usable_height % main_count;
 
                     secondary_width = usable_width - main_width;
                     secondary_height = usable_height / secondary_count;
                     secondary_height_rem = usable_height % secondary_count;
-                } else if (output.main_count > 0) {
+                } else if (main_count > 0) {
                     main_width = usable_width;
-                    main_height = usable_height / output.main_count;
-                    main_height_rem = usable_height % output.main_count;
+                    main_height = usable_height / main_count;
+                    main_height_rem = usable_height % main_count;
                 } else if (secondary_width > 0) {
                     main_width = 0;
                     secondary_width = usable_width;
@@ -215,17 +216,17 @@ const Output = struct {
                     var width: u32 = undefined;
                     var height: u32 = undefined;
 
-                    if (i < output.main_count) {
+                    if (i < main_count) {
                         x = 0;
                         y = @intCast(i32, (i * main_height) + if (i > 0) main_height_rem else 0);
                         width = main_width;
                         height = main_height + if (i == 0) main_height_rem else 0;
                     } else {
                         x = @intCast(i32, main_width);
-                        y = @intCast(i32, (i - output.main_count) * secondary_height +
-                            if (i > output.main_count) secondary_height_rem else 0);
+                        y = @intCast(i32, (i - main_count) * secondary_height +
+                            if (i > main_count) secondary_height_rem else 0);
                         width = secondary_width;
-                        height = secondary_height + if (i == output.main_count) secondary_height_rem else 0;
+                        height = secondary_height + if (i == main_count) secondary_height_rem else 0;
                     }
 
                     x += @intCast(i32, view_padding);