The browser omnibar's updateNSView and controlTextDidEndEditing were both dispatching makeFirstResponder calls without any guard against re-dispatch. Each makeFirstResponder triggers SwiftUI's FirstResponderObserver, which re-evaluates the view graph, which calls updateNSView again, creating an infinite loop via the main dispatch queue. Fix: Add a pendingFocusRequest flag on the coordinator to prevent re-dispatching while a focus/blur request is already in flight. Also add nsView.currentEditor() != nil to the isFirstResponder check so the field is recognized as focused during the transition when the field editor (not the field itself) is first responder. |
||
|---|---|---|
| .. | ||
| BrowserPanel.swift | ||
| BrowserPanelView.swift | ||
| CmuxWebView.swift | ||
| Panel.swift | ||
| PanelContentView.swift | ||
| TerminalPanel.swift | ||
| TerminalPanelView.swift | ||