fix: refresh hover when menus modify their contents

This fixes hover and scroll in palettes and dropdowns.

close #486
This commit is contained in:
CJ van den Berg 2026-02-03 18:45:44 +01:00
parent d5166e2f68
commit 87e0e06aaf
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
5 changed files with 9 additions and 1 deletions

View file

@ -276,6 +276,7 @@ pub fn Create(options: type) type {
}
fn start_query(self: *Self, n: usize) !void {
defer tui.reset_hover(@src());
self.items = 0;
self.menu.reset_items();
self.menu.selected = null;
@ -307,7 +308,6 @@ pub fn Create(options: type) type {
self.menu.select_down();
const padding = tui.get_widget_style(widget_type).padding;
self.do_resize(padding);
tui.refresh_hover(@src());
self.selection_updated();
}
}

View file

@ -249,6 +249,7 @@ fn receive_project_manager(self: *Self, _: tp.pid_ref, m: tp.message) MessageFil
}
fn process_project_manager(self: *Self, m: tp.message) MessageFilter.Error!void {
defer tui.reset_hover(@src());
var file_name: []const u8 = undefined;
var file_type: []const u8 = undefined;
var file_icon: []const u8 = undefined;

View file

@ -318,6 +318,7 @@ pub fn Create(options: type) type {
}
fn start_query(self: *Self, n: usize) !void {
defer tui.reset_hover(@src());
defer self.update_count_hint();
self.items = 0;
self.menu.reset_items();

View file

@ -162,6 +162,7 @@ fn receive_project_manager(self: *Self, _: tp.pid_ref, m: tp.message) MessageFil
}
fn process_project_manager(self: *Self, m: tp.message) MessageFilter.Error!void {
defer tui.reset_hover(@src());
var file_name: []const u8 = undefined;
var file_type: []const u8 = undefined;
var file_icon: []const u8 = undefined;

View file

@ -893,6 +893,11 @@ pub fn refresh_hover(src: std.builtin.SourceLocation) void {
_ = self.update_hover(self.last_hover_y, self.last_hover_x) catch {};
}
pub fn reset_hover(src: std.builtin.SourceLocation) void {
const self = current();
self.clear_hover_focus(src) catch {};
}
pub fn save_config() (root.ConfigDirError || root.ConfigWriteError)!void {
const self = current();
try root.write_config(self.config_, self.allocator);