this repo has no description
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

Handle buffer scroll

authored by

Palanix and committed by
Tim Culverhouse
ee4ad357 cc5cf1b1

+34 -30
+34 -30
src/app.zig
··· 902 902 try client.requestHistory(.after, ch); 903 903 self.selectChannelName(client, ch.name); 904 904 //handle sending the message 905 - if (cmd.len - e + 1 > 0) { 905 + if (cmd.len - e > 1) { 906 906 const msg = try std.fmt.bufPrint( 907 907 &buf, 908 908 "PRIVMSG {s} :{s}\r\n", ··· 1531 1531 for (channel.members.items) |*member| { 1532 1532 defer member_row += 1; 1533 1533 if (member_row < self.state.members.scroll_offset) continue; 1534 - const member_seg = [_]vaxis.Segment{ 1534 + var member_seg = [_]vaxis.Segment{ 1535 1535 .{ 1536 1536 .text = std.mem.asBytes(&member.prefix), 1537 1537 }, ··· 1582 1582 1583 1583 defer self.state.buffers.count = row; 1584 1584 for (clients) |client| { 1585 - var style: vaxis.Style = if (row == self.state.buffers.selected_idx) 1586 - .{ 1587 - .fg = if (client.status == .disconnected) .{ .index = 8 } else .default, 1588 - .reverse = true, 1585 + const scroll_offset = self.state.buffers.scroll_offset; 1586 + if (!(row < scroll_offset)) { 1587 + var style: vaxis.Style = if (row == self.state.buffers.selected_idx) 1588 + .{ 1589 + .fg = if (client.status == .disconnected) .{ .index = 8 } else .default, 1590 + .reverse = true, 1591 + } 1592 + else 1593 + .{ 1594 + .fg = if (client.status == .disconnected) .{ .index = 8 } else .default, 1595 + }; 1596 + const network_win = win.child(.{ 1597 + .y_off = row, 1598 + .height = .{ .limit = 1 }, 1599 + }); 1600 + if (network_win.hasMouse(self.state.mouse)) |_| { 1601 + self.vx.setMouseShape(.pointer); 1602 + style.bg = .{ .index = 8 }; 1589 1603 } 1590 - else 1591 - .{ 1592 - .fg = if (client.status == .disconnected) .{ .index = 8 } else .default, 1593 - }; 1594 - const network_win = win.child(.{ 1595 - .y_off = row, 1596 - .height = .{ .limit = 1 }, 1597 - }); 1598 - if (network_win.hasMouse(self.state.mouse)) |_| { 1599 - self.vx.setMouseShape(.pointer); 1600 - style.bg = .{ .index = 8 }; 1601 - } 1602 - _ = try network_win.print( 1603 - &.{.{ 1604 - .text = client.config.name orelse client.config.server, 1605 - .style = style, 1606 - }}, 1607 - .{}, 1608 - ); 1609 - if (network_win.hasMouse(self.state.mouse)) |_| { 1610 - self.vx.setMouseShape(.pointer); 1604 + _ = try network_win.print( 1605 + &.{.{ 1606 + .text = client.config.name orelse client.config.server, 1607 + .style = style, 1608 + }}, 1609 + .{}, 1610 + ); 1611 + if (network_win.hasMouse(self.state.mouse)) |_| { 1612 + self.vx.setMouseShape(.pointer); 1613 + } 1611 1614 } 1612 1615 row += 1; 1613 1616 for (client.channels.items) |*channel| { 1617 + defer row += 1; 1618 + if (row < scroll_offset) continue; 1614 1619 const channel_win = win.child(.{ 1615 - .y_off = row, 1620 + .y_off = row -| scroll_offset, 1616 1621 .height = .{ .limit = 1 }, 1617 1622 }); 1618 1623 if (channel_win.hasMouse(self.state.mouse)) |mouse| { ··· 1639 1644 .{ 1640 1645 .fg = if (client.status == .disconnected) .{ .index = 8 } else .default, 1641 1646 }; 1642 - defer row += 1; 1643 1647 const prefix: []const u8 = if (channel.name[0] == '#') "#" else ""; 1644 1648 const name_offset: usize = if (prefix.len > 0) 1 else 0; 1645 1649 ··· 1674 1678 if (result.overflow) 1675 1679 win.writeCell( 1676 1680 buf_list_w -| 1, 1677 - row, 1681 + row -| scroll_offset, 1678 1682 .{ 1679 1683 .char = .{ 1680 1684 .grapheme = "…",