From 35d823d0b8d21141d34d59e33f802418946d05d7 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 23 Dec 2025 21:46:15 +0100 Subject: [PATCH] refactor: also cancel completion dropdown if view changes --- src/tui/mode/overlay/completion_dropdown.zig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/tui/mode/overlay/completion_dropdown.zig b/src/tui/mode/overlay/completion_dropdown.zig index 1477348..9910fb9 100644 --- a/src/tui/mode/overlay/completion_dropdown.zig +++ b/src/tui/mode/overlay/completion_dropdown.zig @@ -30,6 +30,7 @@ pub const Entry = struct { pub const ValueType = struct { start: ed.CurSel = .{}, cursor: ed.Cursor = .{}, + view: ed.View = .{}, replace: ?Buffer.Selection = null, }; pub const defaultValue: ValueType = .{}; @@ -88,14 +89,16 @@ pub fn handle_event(self: *Type, _: tp.pid_ref, m: tp.message) tp.result { try m.match(.{ "E", "close" })) { const editor = tui.get_active_editor() orelse return; - if (!self.value.cursor.eql(editor.get_primary().cursor)) - tp.self_pid().send(.{ "cmd", "exit_overlay_mode" }) catch |e| self.logger.err(module_name, e); + if (!self.value.cursor.eql(editor.get_primary().cursor) or !self.value.view.eql(editor.view)) { + tp.self_pid().send(.{ "cmd", "palette_menu_cancel" }) catch |e| self.logger.err(module_name, e); + } } } pub fn initial_query(self: *Type, allocator: std.mem.Allocator) error{OutOfMemory}![]const u8 { const editor = tui.get_active_editor() orelse return allocator.dupe(u8, ""); self.value.cursor = editor.get_primary().cursor; + self.value.view = editor.view; return if (self.value.replace) |replace| blk: { const sel: Buffer.Selection = .{ .begin = replace.begin, .end = self.value.start.cursor }; break :blk editor.get_selection(sel, allocator) catch break :blk allocator.dupe(u8, ""); @@ -295,6 +298,8 @@ pub fn updated(self: *Type, button_: ?*Type.ButtonType) !void { } try mv.set_info_content(" ", .append); // blank line try mv.set_info_content(values.documentation, .append); + if (mv.get_active_editor()) |editor| + self.value.view = editor.view; } pub fn cancel(_: *Type) !void {