feat: add theme selection palette

Also, refactor to share palette code and make palettes scroll properly
with the mouse wheel.
This commit is contained in:
CJ van den Berg 2024-08-14 21:27:32 +02:00
parent 8c3c786357
commit 4b6c08154b
11 changed files with 675 additions and 490 deletions

View file

@ -196,13 +196,18 @@ pub fn State(ctx_type: type) type {
}
pub fn activate_selected(self: *Self) void {
const selected = self.selected orelse return;
const button = self.get_selected() orelse return;
button.opts.on_click(&button.opts.ctx, button);
}
pub fn get_selected(self: *Self) ?*button_type {
const selected = self.selected orelse return null;
self.selected_active = true;
const pos = selected + self.header_count;
if (pos < self.menu.widgets.items.len) {
const button = self.menu.widgets.items[pos].widget.dynamic_cast(button_type) orelse return;
button.opts.on_click(&button.opts.ctx, button);
}
return if (pos < self.menu.widgets.items.len)
self.menu.widgets.items[pos].widget.dynamic_cast(button_type)
else
null;
}
};
}