Reject stale navigation envelopes before shared boundaries

This commit is contained in:
2026-09-12 19:49:27 -07:00
parent a17ca5d066
commit 659b7a655a
11 changed files with 422 additions and 51 deletions
@@ -31,6 +31,24 @@ fn admission_notice(error: query::AdmissionError) -> String {
}
impl App {
pub(super) fn source_input_envelope(&self, message: &Message) -> bool {
match message {
Message::SourceSymbols(context, _) => {
context.session == self.source_workspace.session()
&& context.path == self.source_workspace.active
}
Message::SourceFindClose(context, instance) => {
context == &self.source_symbol_context()
&& *instance == self.source_find_instance
&& self.source_navigation.open
&& self.source_navigation_available()
}
// The checked Find-close envelope is mapped inside update_inner.
Message::SourceNavigation(nav::Event::Close) => false,
_ => true,
}
}
pub fn source_symbol_context(&self) -> nav::SymbolContext {
nav::SymbolContext {
session: self.source_workspace.session(),