Defer pane interaction when opening excerpts in diagnostics view

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.
This commit is contained in:
Nathan Sobo 2022-01-22 13:23:08 -07:00
parent b755b2d602
commit e61a5b172c

View file

@ -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) {