diff --git a/src/olympic/studio/applib/src/studioapp.cpp b/src/olympic/studio/applib/src/studioapp.cpp index 466518ed..ac1ffe02 100644 --- a/src/olympic/studio/applib/src/studioapp.cpp +++ b/src/olympic/studio/applib/src/studioapp.cpp @@ -66,7 +66,9 @@ StudioUI::StudioUI(turbine::Context &ctx, ox::StringParam projectDataDir) noexce auto openFileErr = openFileActiveTab(f, config.activeTabItemName == f); if (openFileErr) { oxErrorf("\nCould not open editor for file:\n\t{}\nReason:\n\t{}\n", f, toStr(openFileErr)); + continue; } + m_activeEditor = m_editors.back().value->get(); } } } else { @@ -194,26 +196,27 @@ void StudioUI::drawTabBar() noexcept { void StudioUI::drawTabs() noexcept { for (auto it = m_editors.begin(); it != m_editors.end();) { - auto const &e = *it; + auto const&e = *it; auto open = true; auto const unsavedChanges = e->unsavedChanges() ? ImGuiTabItemFlags_UnsavedDocument : 0; auto const selected = m_activeEditorUpdatePending == e.get() ? ImGuiTabItemFlags_SetSelected : 0; auto const flags = unsavedChanges | selected; if (ImGui::BeginTabItem(e->itemDisplayName().c_str(), &open, flags)) { - if (m_activeEditor != e.get()) { + if (m_activeEditor != e.get()) [[unlikely]] { m_activeEditor = e.get(); studio::editConfig(keelCtx(m_ctx), [&](StudioConfig &config) { config.activeTabItemName = m_activeEditor->itemPath(); }); + } else [[likely]] { + if (m_activeEditorUpdatePending == e.get()) [[unlikely]] { + m_activeEditorUpdatePending = nullptr; + } + if (m_activeEditorOnLastDraw != e.get()) [[unlikely]] { + m_activeEditor->onActivated(); + } + e->draw(m_sctx); + m_activeEditorOnLastDraw = e.get(); } - if (m_activeEditorUpdatePending == e.get()) { - m_activeEditorUpdatePending = nullptr; - } - if (m_activeEditorOnLastDraw != e.get()) [[unlikely]] { - m_activeEditor->onActivated(); - } - e->draw(m_sctx); - m_activeEditorOnLastDraw = e.get(); ImGui::EndTabItem(); } if (!open) {