[studio] Cleanup navigation code
Build / build (push) Successful in 1m14s

This commit is contained in:
2026-05-31 02:37:49 -05:00
parent 7128b7c83a
commit 5b6ea9468b
2 changed files with 7 additions and 9 deletions
+4 -2
View File
@@ -400,9 +400,11 @@ void StudioUI::drawTabs() noexcept {
*m_sctx.navIdx == m_sctx.navStack.size() || *m_sctx.navIdx == m_sctx.navStack.size() ||
(*m_sctx.navIdx < m_sctx.navStack.size() && (*m_sctx.navIdx < m_sctx.navStack.size() &&
m_sctx.navStack[*m_sctx.navIdx].filePath != m_activeEditor->itemPath())) { m_sctx.navStack[*m_sctx.navIdx].filePath != m_activeEditor->itemPath())) {
auto &navIdx = m_sctx.navIdx.emplace(m_sctx.navIdx.or_value(0u)); auto constexpr defaultVal =
m_sctx.navStack.resize(navIdx); ox::MaxValue<ox::remove_reference_t<decltype(*m_sctx.navIdx)>>;
auto &navIdx = m_sctx.navIdx.emplace(m_sctx.navIdx.or_value(defaultVal));
++navIdx; ++navIdx;
m_sctx.navStack.resize(navIdx);
m_sctx.navStack.emplace_back( m_sctx.navStack.emplace_back(
ox::String{m_activeEditor->itemPath()}, ox::String{m_activeEditor->itemPath()},
ox::String{}); ox::String{});
+3 -7
View File
@@ -15,12 +15,9 @@ void navigateTo(Context &ctx, ox::StringParam filePath, ox::StringParam navArgs)
} }
path = p; path = p;
} }
//if ( auto constexpr defaultVal =
// auto const [np, err] = ctx.navStack.back(); ox::MaxValue<ox::remove_reference_t<decltype(*ctx.navIdx)>>;
// !err && np->filePath == path && np->navArgs == navArgs.view()) { ctx.navStack.resize(ctx.navIdx.or_value(defaultVal) + 1);
// return;
//}
ctx.navStack.resize(ctx.navIdx.or_value(0) + 1);
ctx.navStack.emplace_back(ox::String{path}, ox::String{navArgs.view()}); ctx.navStack.emplace_back(ox::String{path}, ox::String{navArgs.view()});
try { try {
ctx.navCallback(std::move(path), std::move(navArgs)); ctx.navCallback(std::move(path), std::move(navArgs));
@@ -35,7 +32,6 @@ void navigateBack(Context &ctx) noexcept {
return; return;
} }
auto &navIdx = *ctx.navIdx; auto &navIdx = *ctx.navIdx;
navIdx = ox::min(navIdx, ctx.navStack.size() - 1);
while (navIdx && navIdx < ctx.navStack.size()) { while (navIdx && navIdx < ctx.navStack.size()) {
--navIdx; --navIdx;
auto const &n = ctx.navStack[navIdx]; auto const &n = ctx.navStack[navIdx];