diff --git a/src/olympic/studio/applib/src/studioui.cpp b/src/olympic/studio/applib/src/studioui.cpp index c807c773..5ce33023 100644 --- a/src/olympic/studio/applib/src/studioui.cpp +++ b/src/olympic/studio/applib/src/studioui.cpp @@ -126,9 +126,8 @@ static ox::Error convertStudioConfigV1ToStudioConfigV2( using StudioConfig = StudioConfigV2; -StudioUI::StudioUI(turbine::Context &ctx, ox::StringParam projectDataDir) noexcept: - m_sctx{*this, ctx}, - m_tctx{ctx}, +StudioUI::StudioUI(turbine::Context &tctx, ox::StringParam projectDataDir) noexcept: + m_sctx{*this, tctx}, m_projectDataDir{std::move(projectDataDir)} { { ImFontConfig fontCfg; @@ -139,7 +138,7 @@ StudioUI::StudioUI(turbine::Context &ctx, ox::StringParam projectDataDir) noexce // but AddFontFromMemoryTTF requires a mutable buffer. // However, setting fontCfg.FontDataOwnedByAtlas ensures // that it will still be treated as const. - // ImGui documentation recognize that this is a bad design, + // ImGui documentation recognizes that this is a bad design, // and hopefully it will change at some point. io.Fonts->AddFontFromMemoryTTF(const_cast(font.data()), static_cast(font.size()), 13, &fontCfg); } @@ -357,7 +356,6 @@ void StudioUI::drawTabs() noexcept { } if (m_closeActiveTab) [[unlikely]] { ImGui::SetTabItemClosed(e->itemDisplayName().c_str()); - } else if (open) [[likely]] { e->draw(m_sctx); } diff --git a/src/olympic/studio/applib/src/studioui.hpp b/src/olympic/studio/applib/src/studioui.hpp index d1bf8e83..863de46a 100644 --- a/src/olympic/studio/applib/src/studioui.hpp +++ b/src/olympic/studio/applib/src/studioui.hpp @@ -25,12 +25,12 @@ namespace studio { -class StudioUI: public ox::SignalHandler { +class StudioUI final: public ox::SignalHandler { friend class StudioUIDrawer; private: Context m_sctx; - turbine::Context &m_tctx; + turbine::Context &m_tctx{m_sctx.tctx}; ox::String m_projectDataDir; ox::UPtr m_project; TaskRunner m_taskRunner; @@ -83,7 +83,7 @@ class StudioUI: public ox::SignalHandler { ox::Optional m_navAction; public: - explicit StudioUI(turbine::Context &ctx, ox::StringParam projectDataDir) noexcept; + explicit StudioUI(turbine::Context &tctx, ox::StringParam projectDataDir) noexcept; void handleKeyEvent(turbine::Key, bool down) noexcept; diff --git a/src/olympic/studio/modlib/include/studio/context.hpp b/src/olympic/studio/modlib/include/studio/context.hpp index 17f067a1..e25e543e 100644 --- a/src/olympic/studio/modlib/include/studio/context.hpp +++ b/src/olympic/studio/modlib/include/studio/context.hpp @@ -15,11 +15,14 @@ namespace studio { class StudioUI; struct Context { - StudioUI &ui; - Project *project = nullptr; - turbine::Context &tctx; - Context(StudioUI &pUi, turbine::Context &pTctx) noexcept: - ui(pUi), tctx(pTctx) {} + public: + friend StudioUI; + StudioUI &ui; + Project *project = nullptr; + turbine::Context &tctx; + protected: + Context(StudioUI &pUi, turbine::Context &pTctx) noexcept: + ui{pUi}, tctx{pTctx} {} }; [[nodiscard]] @@ -27,6 +30,11 @@ inline keel::Context &keelCtx(Context &ctx) noexcept { return keelCtx(ctx.tctx); } +[[nodiscard]] +inline keel::Context const &keelCtx(Context const &ctx) noexcept { + return keelCtx(ctx.tctx); +} + void navigateTo(Context &ctx, ox::StringParam filePath, ox::StringParam navArgs = "") noexcept; }