diff --git a/src/Screens/ModelEditorScreen.cpp b/src/Screens/ModelEditorScreen.cpp index 2120588a8b..4e3e6b2202 100644 --- a/src/Screens/ModelEditorScreen.cpp +++ b/src/Screens/ModelEditorScreen.cpp @@ -142,7 +142,9 @@ static void DrawTopLevelMembersEditor(osc::UndoableUiModel& st) { if (std::strlen(nambuf) > 0) { - st.updSelected()->setName(nambuf); + OpenSim::Component* selectedComponent = st.updSelected(); + selectedComponent->setName(nambuf); + st.setSelected(selectedComponent); // CARE: the selection depends on the name of the component st.commit("changed component name"); } } @@ -1242,6 +1244,12 @@ class osc::ModelEditorScreen::Impl final { DrawTopLevelMembersEditor(uim); } + // top-level member edits may have changed this + if (!uim.getSelected()) + { + return; + } + // property editors { auto maybeUpdater = m_ObjectPropsEditor.draw(*uim.getSelected());