summaryrefslogtreecommitdiff
path: root/src/mouse.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/mouse.zig')
-rw-r--r--src/mouse.zig34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/mouse.zig b/src/mouse.zig
index beb2e624..5ab6fe2b 100644
--- a/src/mouse.zig
+++ b/src/mouse.zig
@@ -7,6 +7,8 @@ const exec = @import("exec.zig");
const look = @import("look.zig");
const std = @import("std");
const layout = @import("layout.zig");
+const Presentation = @import("Presentation.zig");
+const animation = @import("animation.zig");
const modal = @import("modal.zig");
const ctlfs = @import("ninep/tree.zig");
const panes = @import("panes.zig");
@@ -1233,7 +1235,7 @@ test "pointer coordinates follow presented panel geometry" {
defer p.deinit();
const pane = p.panes[0].?;
- const moving: layout.Track = .{
+ const moving: animation.Track = .{
.serial = pane.serial,
.pane = 0,
.phase = .moving,
@@ -1244,13 +1246,13 @@ test "pointer coordinates follow presented panel geometry" {
p.acknowledgePanelPresentation(&.{moving});
// One shared physical-to-logical map feeds all pointer gestures. The
// selected sample is 26.25% across and 35% down the presented rectangle.
- try std.testing.expectEqual(layout.Presentation.CellPosition{ .col = 21, .row = 7 }, p.presentation.pointer(p.screen_w, p.screen_h, 30, 8).?);
+ try std.testing.expectEqual(Presentation.CellPosition{ .col = 21, .row = 7 }, p.presentation.pointer(p.screen_w, p.screen_h, 30, 8).?);
// Canonical cells covered only by the not-yet-arrived target are inert.
try std.testing.expect(p.presentation.pointer(p.screen_w, p.screen_h, 2, 2) == null);
// Unrelated screen space remains in the ordinary grid coordinate system.
- try std.testing.expectEqual(layout.Presentation.CellPosition{ .col = 100, .row = 10 }, p.presentation.pointer(p.screen_w, p.screen_h, 100, 10).?);
+ try std.testing.expectEqual(Presentation.CellPosition{ .col = 100, .row = 10 }, p.presentation.pointer(p.screen_w, p.screen_h, 100, 10).?);
- p.acknowledgePanelPresentation(&.{layout.Track{
+ p.acknowledgePanelPresentation(&.{animation.Track{
.serial = pane.serial,
.pane = 0,
.phase = .opening,
@@ -1262,7 +1264,7 @@ test "pointer coordinates follow presented panel geometry" {
// Tracks paint in pane-slot order inside a phase. The later slot is the
// top quad and therefore owns an overlap, even though both are moving.
- const overlap = [_]layout.Track{ .{
+ const overlap = [_]animation.Track{ .{
.serial = pane.serial,
.pane = 0,
.phase = .moving,
@@ -1280,7 +1282,7 @@ test "pointer coordinates follow presented panel geometry" {
p.presentation.shown_tracks = @splat(null);
p.presentation.shown_tracks[0] = overlap[0];
p.presentation.shown_tracks[1] = overlap[1];
- try std.testing.expectEqual(layout.Presentation.CellPosition{ .col = 65, .row = 3 }, p.presentation.pointer(p.screen_w, p.screen_h, 25, 3).?);
+ try std.testing.expectEqual(Presentation.CellPosition{ .col = 65, .row = 3 }, p.presentation.pointer(p.screen_w, p.screen_h, 25, 3).?);
}
test "queued pointer input is inert until a changed layout is presented" {
@@ -1296,7 +1298,7 @@ test "queued pointer input is inert until a changed layout is presented" {
try std.testing.expect(p.presentation.pending);
try std.testing.expect(p.presentation.pointer(p.screen_w, p.screen_h, 10, 4) == null);
- var tracks: [MAX_PANES]layout.Track = undefined;
+ var tracks: [MAX_PANES]animation.Track = undefined;
var len: usize = 0;
for (p.presentation.tracks) |maybe| if (maybe) |track| {
tracks[len] = track;
@@ -1313,7 +1315,7 @@ test "pointer rejects panel content cells which have not materialized" {
const p = try Pardes.init(std.testing.allocator, .{ .cols = 80, .rows = 12, .tty_only = true });
defer p.deinit();
const pane = p.panes[0].?;
- const target: layout.Box = .{ .x = 4, .y = 2, .w = 32, .h = 4 };
+ const target: animation.Box = .{ .x = 4, .y = 2, .w = 32, .h = 4 };
p.presentation.diffs = try p.gpa.alloc(PanelCellDiff, @as(usize, p.screen_w) * p.screen_h);
@memset(p.presentation.diffs, .unchanged);
for (2..6) |row| {
@@ -1328,9 +1330,9 @@ test "pointer rejects panel content cells which have not materialized" {
}
p.presentation.diff_state = .ready;
- for ([_]layout.Transition{ .dissolve, .ascii }) |effect| {
+ for ([_]animation.Transition{ .dissolve, .ascii }) |effect| {
const frame: u16 = if (effect == .dissolve) 3 else 5;
- const track: layout.Track = .{
+ const track: animation.Track = .{
.serial = pane.serial,
.pane = 0,
.phase = .opening,
@@ -1349,7 +1351,7 @@ test "pointer rejects panel content cells which have not materialized" {
const col: u16 = @intCast(4 + relative_col);
const row: u16 = @intCast(2 + relative_row);
const visible = switch (effect) {
- .dissolve => layout.dissolveRevealed(
+ .dissolve => animation.dissolveRevealed(
pane.serial,
rcol,
rrow,
@@ -1364,7 +1366,7 @@ test "pointer rejects panel content cells which have not materialized" {
const mapped = p.presentation.pointer(p.screen_w, p.screen_h, col, row);
try std.testing.expectEqual(visible, mapped != null);
if (mapped) |point|
- try std.testing.expectEqual(layout.Presentation.CellPosition{ .col = col, .row = row }, point);
+ try std.testing.expectEqual(Presentation.CellPosition{ .col = col, .row = row }, point);
saw_visible = saw_visible or visible;
saw_hidden = saw_hidden or !visible;
};
@@ -1380,9 +1382,9 @@ test "unchanged content cells remain clickable through data effects" {
p.presentation.diffs = try p.gpa.alloc(PanelCellDiff, @as(usize, p.screen_w) * p.screen_h);
@memset(p.presentation.diffs, .unchanged);
p.presentation.diff_state = .ready;
- const box: layout.Box = .{ .x = 2, .y = 2, .w = 20, .h = 4 };
+ const box: animation.Box = .{ .x = 2, .y = 2, .w = 20, .h = 4 };
- for ([_]layout.Transition{ .dissolve, .ascii }) |effect| {
+ for ([_]animation.Transition{ .dissolve, .ascii }) |effect| {
p.acknowledgePanelPresentation(&.{.{
.serial = pane.serial,
.pane = 0,
@@ -1391,7 +1393,7 @@ test "unchanged content cells remain clickable through data effects" {
.from = box,
.to = box,
}});
- try std.testing.expectEqual(layout.Presentation.CellPosition{ .col = 8, .row = 3 }, p.presentation.pointer(p.screen_w, p.screen_h, 8, 3).?);
+ try std.testing.expectEqual(Presentation.CellPosition{ .col = 8, .row = 3 }, p.presentation.pointer(p.screen_w, p.screen_h, 8, 3).?);
}
}
@@ -1400,7 +1402,7 @@ test "held drag follows acknowledged panels and balances an invisible release" {
defer p.deinit();
const pane = p.panes[0].?;
const target = layout.panelBox(p.rects[0]);
- var track: layout.Track = .{
+ var track: animation.Track = .{
.serial = pane.serial,
.pane = 0,
.phase = .moving,