feat: add home/end keybindings to palette

This commit is contained in:
CJ van den Berg 2025-05-26 15:45:02 +02:00
parent 4c759b14f3
commit f59125f74a
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
3 changed files with 30 additions and 5 deletions

View file

@ -301,6 +301,8 @@
["down", "palette_menu_down"],
["page_up", "palette_menu_pageup"],
["page_down", "palette_menu_pagedown"],
["home", "palette_menu_top"],
["end", "palette_menu_bottom"],
["enter", "palette_menu_activate"],
["delete", "palette_menu_delete_item"],
["backspace", "overlay_delete_backwards"]

View file

@ -275,11 +275,6 @@ const cmds = struct {
const Meta = command.Metadata;
const Result = command.Result;
pub fn palette_menu_top(self: *Self, _: Ctx) Result {
self.menu.select_first();
}
pub const palette_menu_top_meta: Meta = .{};
pub fn palette_menu_down(self: *Self, _: Ctx) Result {
self.menu.select_down();
}
@ -300,6 +295,16 @@ const cmds = struct {
}
pub const palette_menu_pageup_meta: Meta = .{};
pub fn palette_menu_bottom(self: *Self, _: Ctx) Result {
self.menu.select_last();
}
pub const palette_menu_bottom_meta: Meta = .{};
pub fn palette_menu_top(self: *Self, _: Ctx) Result {
self.menu.select_first();
}
pub const palette_menu_top_meta: Meta = .{};
pub fn palette_menu_activate(self: *Self, _: Ctx) Result {
self.menu.activate_selected();
}

View file

@ -425,6 +425,24 @@ pub fn Create(options: type) type {
}
pub const palette_menu_pageup_meta: Meta = .{};
pub fn palette_menu_bottom(self: *Self, _: Ctx) Result {
if (self.total_items > self.view_rows) {
self.view_pos = self.total_items - self.view_rows;
}
try self.start_query(0);
self.menu.select_last();
self.selection_updated();
}
pub const palette_menu_bottom_meta: Meta = .{};
pub fn palette_menu_top(self: *Self, _: Ctx) Result {
self.view_pos = 0;
try self.start_query(0);
self.menu.select_first();
self.selection_updated();
}
pub const palette_menu_top_meta: Meta = .{};
pub fn palette_menu_delete_item(self: *Self, _: Ctx) Result {
if (@hasDecl(options, "delete_item")) {
const button = self.menu.get_selected() orelse return;