Defer pane interaction when opening excerpts in diagnostics view
Nathan Sobo
created
Activating a new item causes the current item to be deactivated. We're the current item, but we're on the stack, so we panic if we try to do this synchronously. If we use defer to wait until we're off the stack it works.
@@ -193,7 +193,10 @@ impl ProjectDiagnosticsEditor {
}
}
- workspace.update(cx, |workspace, cx| {
+ // We defer the pane interaction because we ourselves are a workspace item
+ // and activating a new item causes the pane to call a method on us reentrantly,
+ // which panics if we're on the stack.
+ workspace.defer(cx, |workspace, cx| {
for (buffer, ranges) in new_selections_by_buffer {
let buffer = BufferItemHandle(buffer);
if !workspace.activate_pane_for_item(&buffer, cx) {