summaryrefslogtreecommitdiff
path: root/test/pdf.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-27 23:06:11 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commit95a3a1bb822e583988bfe0f312d0ef219b27a454 (patch)
tree95306e8d3f36f8af05b3ea919f6cdef1e94a028b /test/pdf.zig
parentc8f0c25a854b8e169db08a84d1fdcd915a70aaa0 (diff)
downloadpardes-95a3a1bb822e583988bfe0f312d0ef219b27a454.tar.gz
pardes-95a3a1bb822e583988bfe0f312d0ef219b27a454.zip
Give a pane's body its own Text holding the cursor, selections, mode and undo
acme keeps what edits a text in its Text (dat.h:171-190) and the window holds a body and a tag of that type. The cursor, the selections, the modal state and the edit-buffer undo move off Pane into Text.zig, Pane holds them as its body, and the edit and normal-mode operations take the Text they edit. Nothing changes in behaviour; this is the step that lets the tag become a second Text. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'test/pdf.zig')
-rw-r--r--test/pdf.zig42
1 files changed, 21 insertions, 21 deletions
diff --git a/test/pdf.zig b/test/pdf.zig
index 8e87dfb1..52fb62aa 100644
--- a/test/pdf.zig
+++ b/test/pdf.zig
@@ -13,7 +13,7 @@ const Pardes = pardes.Pardes;
const Builtin = builtins.registry.Builtin();
const Key = pardes.Key;
const Event = pardes.Event;
-const Mode = pardes.Pane.Mode;
+const Mode = panes.Text.Mode;
const Surface = pardes.Surface;
const ImagePlace = pardes.ImagePlace;
const PdfFitMode = panes.Pdf.FitMode;
@@ -457,8 +457,8 @@ test "watched PDF reload replaces MuPDF state and preserves the reading view" {
anchor_fraction * @as(f64, @floatFromInt(state.page_heights[2]));
state.scroll_to_page_pending = false;
state.layout_anchor_pending = false;
- pane.cur_row = 9;
- pane.cur_col = 8;
+ pane.body.cur_row = 9;
+ pane.body.cur_col = 8;
try tmp.dir.writeFile(std.testing.io, .{ .sub_path = "live.pdf", .data = replacement });
try std.testing.expect(p.reloadWatchedFile(0, &.{}));
@@ -482,8 +482,8 @@ test "watched PDF reload replaces MuPDF state and preserves the reading view" {
try std.testing.expect(state.layout_anchor_pending);
try std.testing.expectEqual(@as(usize, 2), state.layout_anchor_page);
try std.testing.expectApproxEqAbs(anchor_fraction, state.layout_anchor_fraction, 0.0001);
- try std.testing.expectEqual(@as(i32, 0), pane.cur_row);
- try std.testing.expectEqual(@as(i32, 0), pane.cur_col);
+ try std.testing.expectEqual(@as(i32, 0), pane.body.cur_row);
+ try std.testing.expectEqual(@as(i32, 0), pane.body.cur_col);
_ = state.ensureText(p.pdf_gpa);
const text_lines = std.mem.count(u8, state.text, "\n") + 1;
try std.testing.expect(state.text_scroll < text_lines);
@@ -690,8 +690,8 @@ test "MuPDF pane renders, navigates, searches, and round-trips its page" {
p.update(.{ .key = .{ .cp = '4' } });
p.update(.{ .key = .{ .cp = 'g' } });
p.update(.{ .key = .{ .cp = '?' } });
- try std.testing.expectEqual(.none, pane.normal.prefix);
- try std.testing.expectEqual(@as(u32, 0), pane.normal.count);
+ try std.testing.expectEqual(.none, pane.body.normal.prefix);
+ try std.testing.expectEqual(@as(u32, 0), pane.body.normal.count);
p.update(.{ .key = .{ .cp = 'j' } });
try std.testing.expectEqual(row_scroll, pane.pdf.?.document_scroll_y);
@@ -893,9 +893,9 @@ test "MuPDF pane renders, navigates, searches, and round-trips its page" {
p.update(.{ .key = .{ .cp = 'n' } });
try std.testing.expectEqual(results_id, p.active);
const results_pane = p.panes[results_id].?;
- try std.testing.expect(results_pane.vsel.active and results_pane.vsel.explicit);
- try std.testing.expectEqual(@as(i32, 0), results_pane.cur_row);
- try std.testing.expectEqual(@as(i32, 0), results_pane.cur_col);
+ try std.testing.expect(results_pane.body.vsel.active and results_pane.body.vsel.explicit);
+ try std.testing.expectEqual(@as(i32, 0), results_pane.body.cur_row);
+ try std.testing.expectEqual(@as(i32, 0), results_pane.body.cur_col);
p.update(.{ .key = .{ .cp = Key.enter } });
try std.testing.expectEqual(@as(usize, 0), p.active);
try std.testing.expectEqualStrings("Pardes", pane.pdf.?.search_query);
@@ -1097,15 +1097,15 @@ test "PDF normal adapter consumes unsupported actions and navigates page fallbac
p.update(.{ .key = .{ .cp = '|' } });
try std.testing.expectEqual(page_before_noop, pv.page);
try std.testing.expectEqual(revision_before_noop, pv.next_raster_revision);
- try std.testing.expectEqual(@as(u32, 0), pane.normal.count);
- try std.testing.expectEqual(.none, pane.normal.prefix);
- try std.testing.expect(!pane.vsel.active and !pane.msel.active and pane.nsel == 0);
+ try std.testing.expectEqual(@as(u32, 0), pane.body.normal.count);
+ try std.testing.expectEqual(.none, pane.body.normal.prefix);
+ try std.testing.expect(!pane.body.vsel.active and !pane.body.msel.active and pane.body.nsel == 0);
try std.testing.expect(!pane.tag_edit);
// Cross-pane BODY-NORMAL actions keep their established shared paths.
p.update(.{ .key = .{ .cp = ':' } });
try std.testing.expect(pane.tag_edit);
- try std.testing.expectEqual(Mode.normal, pane.mode);
+ try std.testing.expectEqual(Mode.normal, pane.body.mode);
p.update(.{ .key = .{ .cp = Key.escape } });
try std.testing.expect(!pane.tag_edit);
p.update(.{ .key = .{ .cp = ' ' } });
@@ -1167,8 +1167,8 @@ test "Escape cancels PDF chrome in place and Shift-Escape leaves the pane" {
try std.testing.expect(!pv.highlights_dirty and !pv.search_reveal_pending);
try std.testing.expectEqual(page_before, pv.page);
try std.testing.expectEqual(scroll_before, pv.document_scroll_y);
- try std.testing.expectEqual(@as(u32, 0), pane.normal.count);
- try std.testing.expectEqual(.none, pane.normal.prefix);
+ try std.testing.expectEqual(@as(u32, 0), pane.body.normal.count);
+ try std.testing.expectEqual(.none, pane.body.normal.prefix);
// A second Escape on a bare document is inert rather than an exit.
p.update(.{ .key = .{ .cp = Key.escape } });
try std.testing.expectEqual(@as(usize, 0), p.active);
@@ -1781,8 +1781,8 @@ test "PDF native mouse selection, Look, and highlights share page geometry" {
const page_before = pv.page;
const scroll_before = pv.document_scroll_y;
const sels_before = pane.sel;
- const cursor_before = .{ pane.cur_row, pane.cur_col };
- const modal_before = .{ pane.msel, pane.vsel, pane.nsel };
+ const cursor_before = .{ pane.body.cur_row, pane.body.cur_col };
+ const modal_before = .{ pane.body.msel, pane.body.vsel, pane.body.nsel };
const selection_before = pv.selection orelse return error.MissingPdfSelection;
const selection_quads_before = try gpa.dupe(pdf_impl.Quad, selection_before.quads);
defer gpa.free(selection_quads_before);
@@ -1836,8 +1836,8 @@ test "PDF native mouse selection, Look, and highlights share page geometry" {
try std.testing.expectEqual(page_before, pv.page);
try std.testing.expectEqual(scroll_before, pv.document_scroll_y);
try std.testing.expect(std.meta.eql(sels_before, pane.sel));
- try std.testing.expectEqual(cursor_before, .{ pane.cur_row, pane.cur_col });
- try std.testing.expect(std.meta.eql(modal_before, .{ pane.msel, pane.vsel, pane.nsel }));
+ try std.testing.expectEqual(cursor_before, .{ pane.body.cur_row, pane.body.cur_col });
+ try std.testing.expect(std.meta.eql(modal_before, .{ pane.body.msel, pane.body.vsel, pane.body.nsel }));
const selection_after = pv.selection orelse return error.HoverDroppedPdfSelection;
try std.testing.expectEqualSlices(pdf_impl.Quad, selection_quads_before, selection_after.quads);
try std.testing.expectEqualStrings(selection_text_before, pv.selection_text);
@@ -1938,7 +1938,7 @@ test "PDF native mouse selection, Look, and highlights share page geometry" {
try std.testing.expect(panes.Pdf.beginSelection(p, pane, word_col, selected_row));
p.update(.{ .key = .{ .cp = 'v' } });
try std.testing.expect(pv.selection != null);
- try std.testing.expect(!pane.vsel.active);
+ try std.testing.expect(!pane.body.vsel.active);
p.update(.{ .mouse = .{ .button = config.select_button, .kind = .press, .col = word_col, .row = selected_row } });
p.update(.{ .mouse = .{ .button = config.select_button, .kind = .release, .col = word_col, .row = selected_row } });
try std.testing.expect(pv.selection == null);