diff options
Diffstat (limited to 'replay.zig')
| -rw-r--r-- | replay.zig | 22 |
1 files changed, 13 insertions, 9 deletions
@@ -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; } }; |
