From 1102db36cf02fe4988650c4498ff26f1c53921e3 Mon Sep 17 00:00:00 2001 From: Noboru Saito Date: Mon, 15 Sep 2025 10:16:00 +0900 Subject: [PATCH] fix: Preserve eventReachEOF during search - Fixed an issue where eventReachEOF was discarded during search operations - Now eventReachEOF is queued and re-fired after search completes - Ensures EOF notifications are not lost while searching --- oviewer/search.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/oviewer/search.go b/oviewer/search.go index 6cde4462..b2b19a17 100644 --- a/oviewer/search.go +++ b/oviewer/search.go @@ -455,16 +455,23 @@ func (root *Root) cancelWait(cancel context.CancelFunc) error { if err != nil { return err } - // Allow only some events while searching. + // eventQueue stores events that occur during search. + var eventQueue []tcell.Event for { ev := root.Screen.PollEvent() switch ev := ev.(type) { case *tcell.EventKey: // cancel key? c.Capture(ev) case *eventSearchQuit: // found + // Replay events that occurred during the search. + for _, queued := range eventQueue { + root.postEvent(queued) + } return nil case *eventUpdateEndNum: root.updateEndNum() + case *eventReachEOF: + eventQueue = append(eventQueue, ev) default: // ignore other events. }