@@ -250,12 +250,20 @@ void KeyboardMacroView::refreshUI() {
250250 }
251251}
252252
253- void setMidiDeviceFromString (std::shared_ptr<TypedNamedValue> prop, std::string const & storedValue) {
253+ void setMidiDeviceFromString (std::shared_ptr<TypedNamedValue> prop, std::string const & storedValue, bool allowAppend = false ) {
254254 if (prop) {
255255 auto midiDeviceProp = std::dynamic_pointer_cast<MidiDevicePropertyEditor>(prop);
256256 if (midiDeviceProp) {
257- auto appended = midiDeviceProp->findOrAppendLookup (storedValue);
258- midiDeviceProp->value ().setValue (appended);
257+ if (allowAppend) {
258+ auto appended = midiDeviceProp->findOrAppendLookup (storedValue);
259+ midiDeviceProp->value ().setValue (appended);
260+ }
261+ else {
262+ int index = midiDeviceProp->indexOfValue (storedValue);
263+ if (index != 0 ) {
264+ midiDeviceProp->value ().setValue (index);
265+ }
266+ }
259267 }
260268 else {
261269 spdlog::error (" Program error - expected MidiDevicePropertyEditor for the property {}" , prop->name ());
@@ -359,19 +367,7 @@ void KeyboardMacroView::saveSettings() {
359367 Settings::instance ().set (settingKey, prop->lookupValue ());
360368 }
361369 else if (propertyName == kSecondaryMIDIOut ) {
362- auto secondaryProp = std::dynamic_pointer_cast<MidiDevicePropertyEditor>(prop);
363- if (secondaryProp) {
364- int selectedRow = int (secondaryProp->value ().getValue ());
365- if (selectedRow <= 0 ) {
366- Settings::instance ().set (settingKey, " " );
367- }
368- else {
369- Settings::instance ().set (settingKey, secondaryProp->lookupValue ());
370- }
371- }
372- else {
373- Settings::instance ().set (settingKey, prop->value ().toString ().toStdString ());
374- }
370+ Settings::instance ().set (settingKey, prop->lookupValue ());
375371 }
376372 else {
377373 Settings::instance ().set (settingKey, prop->value ().toString ().toStdString ());
0 commit comments