From 8e81212e151a4e20cff33931b95279e14c4e21c2 Mon Sep 17 00:00:00 2001 From: glepnir Date: Sat, 7 Sep 2024 20:41:20 +0800 Subject: fix(highlight): floating windows inherit NormalFloat from global-ns Problem: floating windows did not correctly inherit the NormalFloat highlight group from the global namespace when it was not defined in the window-specific namespace. This led to floating windows losing their background highlight when switching between namespaces. Solution: Updated the window highlight logic in update_window_hl() to handle the fallback. This fix resolves issues with floating window backgrounds not displaying as expected in certain namespace configurations. --- src/nvim/highlight.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/nvim') diff --git a/src/nvim/highlight.c b/src/nvim/highlight.c index 8729c74ce8..b802eab4b9 100644 --- a/src/nvim/highlight.c +++ b/src/nvim/highlight.c @@ -370,12 +370,15 @@ void update_window_hl(win_T *wp, bool invalid) // determine window specific background set in 'winhighlight' bool float_win = wp->w_floating && !wp->w_config.external; - if (float_win && hl_def[HLF_NFLOAT] != 0) { + if (float_win && hl_def[HLF_NFLOAT] != 0 && ns_id > 0) { wp->w_hl_attr_normal = hl_def[HLF_NFLOAT]; } else if (hl_def[HLF_COUNT] > 0) { wp->w_hl_attr_normal = hl_def[HLF_COUNT]; + } else if (float_win) { + wp->w_hl_attr_normal = HL_ATTR(HLF_NFLOAT) > 0 + ? HL_ATTR(HLF_NFLOAT) : highlight_attr[HLF_NFLOAT]; } else { - wp->w_hl_attr_normal = float_win ? HL_ATTR(HLF_NFLOAT) : 0; + wp->w_hl_attr_normal = 0; } if (wp->w_floating) { -- cgit