diff options
| author | Gabriel Schneider <[email protected]> | 2026-07-31 03:15:28 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-08-01 15:02:08 -0300 |
| commit | 6cd33661064df4163f3bd98db432526ad2165b7f (patch) | |
| tree | 6d3cffe1f59eb6b5df8193ddd9c092f781f0979f /test/snapshot.zig | |
| parent | f2b8a25d0a25df778bce57efa4c2c7282c71893b (diff) | |
| download | pardes-6cd33661064df4163f3bd98db432526ad2165b7f.tar.gz pardes-6cd33661064df4163f3bd98db432526ad2165b7f.zip | |
a mostly-vertical touchpad swipe stays vertical
The pad faithfully turns a two-finger scroll's sideways drift into wheel_left
and wheel_right, so a plain scroll slid the view sideways underneath you. Every
vertical tick now re-arms a guard and every horizontal tick spends one instead
of scrolling, so horizontal has to EARN its way back by landing three ticks in
a row with no vertical among them.
Clock-free on purpose: the core is a state machine with no timestamp on a mouse
event, and faking one by counting renders would be worse than the counter. The
guard is only ever armed BY vertical scrolling, so a horizontal swipe from a
still view still moves on its first tick — only horizontal that interrupts
vertical has anything to prove.
A tilt wheel gets the same treatment, where recent-vertical is a much weaker
signal of accident. Deliberate: the only honest fix is a per-device flag out of
the shell, and that layer costs more than the three clicks it would save.
The rule is one pure function next to the number it reads, with an inline test
written to hold for any tuning of that number. unit-test grew a fourth binary
over the core module hxdiff already links. New golden wheeldrift; none moved.
Diffstat (limited to 'test/snapshot.zig')
| -rw-r--r-- | test/snapshot.zig | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/test/snapshot.zig b/test/snapshot.zig index aeb01187..4344654c 100644 --- a/test/snapshot.zig +++ b/test/snapshot.zig @@ -26,7 +26,7 @@ // // Script commands (line-oriented, # comments): // file <name> <content> create file in the script's cwd (before start) -// lines <name> <n> create file with n numbered lines +// lines <name> <n> [tail] create file with n numbered lines, tail on each // dirmk <name> create a subdirectory // start <rows> <cols> [arg] fork the app in a pty (optional extra CLI arg) // wait <ms> <needle...> pump until needle appears on the grid (fails hard) @@ -346,8 +346,13 @@ fn runScript(arena: std.mem.Allocator, exe_z: [:0]const u8, script_path: []const } else if (std.mem.eql(u8, cmd, "lines")) { const name = tok.next() orelse return error.BadScript; const n = try std.fmt.parseInt(usize, tok.next() orelse return error.BadScript, 10); + // anything after the count is glued onto every line (no separator: + // `rest` eats the delimiter, so spell one in the tail if you want + // one) — a file that is long AND wide, which is what a horizontal + // scroll test needs and `file` can only give as one huge script line + const tail = tok.rest(); var buf: std.ArrayList(u8) = .empty; - for (1..n + 1) |i| try buf.appendSlice(arena, try std.fmt.allocPrint(arena, "line {d}\n", .{i})); + for (1..n + 1) |i| try buf.appendSlice(arena, try std.fmt.allocPrint(arena, "line {d}{s}\n", .{ i, tail })); try eh.writeFile(try arena.dupeZ(u8, name), buf.items); } else if (std.mem.eql(u8, cmd, "ppmdiag")) { // The diagonal-split test PPM from the old e2e (white over blue), |
