From 9206b3dc9bced169f02aaa78b71775cdac5d6252 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 26 Nov 2025 10:26:34 -0800 Subject: [PATCH] renderer: manual selection should take priority over search matches Previously it was impossible to select a search match. Well, it was selecting but it wasn't showing that it was selected. --- src/renderer/generic.zig | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/renderer/generic.zig b/src/renderer/generic.zig index df36c4a7e..8c55da602 100644 --- a/src/renderer/generic.zig +++ b/src/renderer/generic.zig @@ -2602,11 +2602,25 @@ pub fn Renderer(comptime GraphicsAPI: type) type { search, search_selected, } = selected: { + // Order below matters for precedence. + + // Selection should take the highest precedence. + const x_compare = if (wide == .spacer_tail) + x -| 1 + else + x; + if (selection) |sel| { + if (x_compare >= sel[0] and + x_compare <= sel[1]) break :selected .selection; + } + // If we're highlighted, then we're selected. In the // future we want to use a different style for this // but this to get started. for (highlights.items) |hl| { - if (x >= hl.range[0] and x <= hl.range[1]) { + if (x_compare >= hl.range[0] and + x_compare <= hl.range[1]) + { const tag: HighlightTag = @enumFromInt(hl.tag); break :selected switch (tag) { .search_match => .search, @@ -2615,15 +2629,6 @@ pub fn Renderer(comptime GraphicsAPI: type) type { } } - const sel = selection orelse break :selected .false; - const x_compare = if (wide == .spacer_tail) - x -| 1 - else - x; - - if (x_compare >= sel[0] and - x_compare <= sel[1]) break :selected .selection; - break :selected .false; };