summaryrefslogtreecommitdiff
path: root/replay.zig
diff options
context:
space:
mode:
Diffstat (limited to 'replay.zig')
-rw-r--r--replay.zig22
1 files changed, 13 insertions, 9 deletions
diff --git a/replay.zig b/replay.zig
index 6cec683e..e08a461c 100644
--- a/replay.zig
+++ b/replay.zig
@@ -287,6 +287,8 @@ fn render(
screen_h: u16,
active: usize,
drag: Drag,
+ hover_col: u16,
+ hover_row: u16,
) !void {
var arena: std.heap.ArenaAllocator = .init(gpa);
defer arena.deinit();
@@ -309,12 +311,7 @@ fn render(
const topbar = if (state.topbar.len > 0) state.topbar else "pardes replay";
_ = bar.printSegment(.{ .text = topbar, .style = .{ .fg = rgbColor(T().tag_fg), .bg = rgbColor(T().tag_bg) } }, .{ .wrap = .none });
- switch (drag) {
- .border_v => |d| pane_ui.drawBorderV(win, d.cur_x, screen_h),
- .border_h => |d| pane_ui.drawBorderH(win, col_x[d.col], col_w[d.col], d.cur_y),
- .move => |d| pane_ui.drawMovePreview(win, layout, col_x, col_w, d.cur_x, d.cur_y, T().scroll_thumb),
- .none => {},
- }
+ pane_ui.drawInteractionPreview(win, layout, rects, col_x, col_w, screen_h, drag, hover_col, hover_row, T().scroll_thumb);
try vx.render(writer);
}
@@ -421,6 +418,8 @@ const App = struct {
col_x: [dump.max_cols]u16,
col_w: [dump.max_cols]u16,
drag: Drag = .none,
+ hover_col: u16 = 0,
+ hover_row: u16 = 0,
fn init(
self: *App,
@@ -464,6 +463,8 @@ const App = struct {
self.screen_h = if (self.state.screen.rows > 0) self.state.screen.rows else 24;
self.active = self.state.active;
self.drag = .none;
+ self.hover_col = 0;
+ self.hover_row = 0;
self.tty = try ui.Tty.init(io, &self.tty_buf);
self.vx = try ui.init(io, gpa, env_map, .{});
@@ -516,8 +517,11 @@ const App = struct {
try self.vx.resize(self.gpa, self.tty.writer(), ws);
},
.mouse => |mouse| {
- const mcol: u16 = if (mouse.col < 0) 0 else @min(@as(u16, @intCast(mouse.col)), self.screen_w -| 1);
- const mrow: u16 = if (mouse.row < 0) 0 else @min(@as(u16, @intCast(mouse.row)), self.screen_h -| 1);
+ const mpos = pane_ui.clampMousePos(self.screen_w, self.screen_h, mouse);
+ const mcol = mpos.col;
+ const mrow = mpos.row;
+ self.hover_col = mcol;
+ self.hover_row = mrow;
const hovered = pane_ui.paneAt(&self.rects, self.panes.len, mcol, mrow);
if (mouse.button == .wheel_down and mouse.type == .press) {
@@ -651,7 +655,7 @@ const App = struct {
p.rows = rows;
clampScroll(p);
}
- try render(&self.vx, self.gpa, self.tty.writer(), self.state, self.panes, &self.rects, &self.layout, &self.col_x, &self.col_w, self.screen_w, self.screen_h, self.active, self.drag);
+ try render(&self.vx, self.gpa, self.tty.writer(), self.state, self.panes, &self.rects, &self.layout, &self.col_x, &self.col_w, self.screen_w, self.screen_h, self.active, self.drag, self.hover_col, self.hover_row);
return true;
}
};