feat: start work on makeing filelist_view scrollable
This commit is contained in:
parent
9a6c5baf8b
commit
4fd1f4935c
1 changed files with 8 additions and 1 deletions
|
@ -34,7 +34,7 @@ commands: Commands = undefined,
|
|||
|
||||
items: usize = 0,
|
||||
view_pos: usize = 0,
|
||||
total_items: usize = 0,
|
||||
view_rows: usize = 0,
|
||||
entries: std.ArrayList(Entry) = undefined,
|
||||
|
||||
const Entry = struct {
|
||||
|
@ -73,6 +73,8 @@ pub fn handle_resize(self: *Self, pos: Widget.Box) void {
|
|||
self.plane.move_yx(@intCast(pos.y), @intCast(pos.x)) catch return;
|
||||
self.plane.resize_simple(@intCast(pos.h), @intCast(pos.w)) catch return;
|
||||
self.menu.resize(pos);
|
||||
self.view_rows = pos.h;
|
||||
self.update_scrollbar();
|
||||
}
|
||||
|
||||
pub fn walk(self: *Self, walk_ctx: *anyopaque, f: Widget.WalkFn, w: *Widget) bool {
|
||||
|
@ -91,6 +93,7 @@ pub fn add_item(self: *Self, entry_: Entry) !void {
|
|||
cbor.writeValue(writer, idx) catch return;
|
||||
self.menu.add_item_with_handler(label.items, handle_menu_action) catch return;
|
||||
self.menu.resize(Widget.Box.from(self.plane));
|
||||
self.update_scrollbar();
|
||||
}
|
||||
|
||||
pub fn reset(self: *Self) void {
|
||||
|
@ -146,6 +149,10 @@ fn handle_scroll(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!void {
|
|||
_ = try m.match(.{ "scroll_to", tp.extract(&self.view_pos) });
|
||||
}
|
||||
|
||||
fn update_scrollbar(self: *Self) void {
|
||||
self.menu.scrollbar.?.set(@intCast(self.entries.items.len), @intCast(self.view_rows), @intCast(self.view_pos));
|
||||
}
|
||||
|
||||
fn handle_menu_action(menu: **Menu.State(*Self), button: *Button.State(*Menu.State(*Self))) void {
|
||||
const self = menu.*.opts.ctx;
|
||||
var idx: usize = undefined;
|
||||
|
|
Loading…
Add table
Reference in a new issue