[studio] Make NewMenu default Name field to focus when it appears
All checks were successful
Build / build (push) Successful in 3m30s

This commit is contained in:
Gary Talent 2025-01-23 00:55:10 -06:00
parent 0d8b82ba49
commit ff666eda9b
2 changed files with 9 additions and 5 deletions

View File

@ -53,6 +53,7 @@ void NewMenu::draw(StudioContext &sctx) noexcept {
case Stage::NewItemType: case Stage::NewItemType:
drawNewItemType(sctx); drawNewItemType(sctx);
break; break;
case Stage::NewItemTransitioningToPath:
case Stage::NewItemPath: case Stage::NewItemPath:
drawNewItemPath(sctx); drawNewItemPath(sctx);
break; break;
@ -90,8 +91,8 @@ void NewMenu::drawNewItemType(StudioContext const&sctx) noexcept {
}, m_types.size(), m_selectedType, {200, 100}); }, m_types.size(), m_selectedType, {200, 100});
auto const&im = *m_types[m_selectedType]; auto const&im = *m_types[m_selectedType];
drawFirstPageButtons(im.itemTemplates().size() == 1 ? drawFirstPageButtons(im.itemTemplates().size() == 1 ?
Stage::NewItemPath : Stage::NewItemTemplate); Stage::NewItemTransitioningToPath : Stage::NewItemTemplate);
if (m_stage == Stage::NewItemPath || m_stage == Stage::NewItemTemplate) { if (m_stage == Stage::NewItemTransitioningToPath || m_stage == Stage::NewItemTemplate) {
if (m_path.len() == 0) { if (m_path.len() == 0) {
m_path = im.defaultPath(); m_path = im.defaultPath();
} }
@ -108,16 +109,18 @@ void NewMenu::drawNewItemTemplate(StudioContext const&sctx) noexcept {
ig::ListBox("Template", [&](size_t const i) -> ox::CStringView { ig::ListBox("Template", [&](size_t const i) -> ox::CStringView {
return templates[i]->name(); return templates[i]->name();
}, templates.size(), m_selectedTemplate, {200, 100}); }, templates.size(), m_selectedTemplate, {200, 100});
drawButtons(Stage::NewItemPath); drawButtons(Stage::NewItemTransitioningToPath);
}); });
} }
void NewMenu::drawNewItemPath(StudioContext &sctx) noexcept { void NewMenu::drawNewItemPath(StudioContext &sctx) noexcept {
setSize({380, 340}); setSize({380, 340});
drawWindow(sctx.tctx, m_open, [this, &sctx] { drawWindow(sctx.tctx, m_open, [this, &sctx] {
if (m_selectedType < m_types.size()) { if (m_stage == Stage::NewItemTransitioningToPath) [[unlikely]] {
ig::InputText("Name", m_itemName); ImGui::SetKeyboardFocusHere();
m_stage = Stage::NewItemPath;
} }
ig::InputText("Name", m_itemName);
ImGui::NewLine(); ImGui::NewLine();
ImGui::Text("Path"); ImGui::Text("Path");
auto const vp = ImGui::GetContentRegionAvail(); auto const vp = ImGui::GetContentRegionAvail();

View File

@ -20,6 +20,7 @@ class NewMenu final: public Popup {
Closed, Closed,
Opening, Opening,
NewItemType, NewItemType,
NewItemTransitioningToPath,
NewItemPath, NewItemPath,
NewItemTemplate, NewItemTemplate,
}; };