From: Stefan Reinauer Date: Sun, 21 Jun 2026 18:42:56 +0000 (-0700) Subject: qt: select active CD image slot from mounts X-Git-Url: https://gitweb.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=1075bbb57d574de0588babdc27e4c3b5a93c0496;p=francis%2Fwinuae.git qt: select active CD image slot from mounts After loading or editing CD mounts, switch the CD image controls to the emulated unit they reference. This makes A4091 CD setups show the slot that is actually attached instead of leaving slot 1 shown. --- diff --git a/od-unix/qt/launcher.cpp b/od-unix/qt/launcher.cpp index c6755e9a..b7106847 100644 --- a/od-unix/qt/launcher.cpp +++ b/od-unix/qt/launcher.cpp @@ -12343,6 +12343,45 @@ private: cdSlotUpdating = false; } + void selectCdSlot(int index, bool storeCurrent = true) + { + ensureCdSlots(); + if (index < 0 || index >= cdSlots.size()) { + return; + } + if (storeCurrent) { + storeCurrentCdSlotFromUi(); + } + currentCdSlot = index; + loadCdSlotToUi(currentCdSlot); + } + + void selectPreferredCdSlotAfterLoad() + { + ensureCdSlots(); + int slot = -1; + if (mountedDrives) { + for (int i = 0; i < mountedDrives->topLevelItemCount(); i++) { + const WinUaeQtMountEntry entry = mountEntryFromItem(mountedDrives->topLevelItem(i)); + if (entry.kind == QStringLiteral("cd") + && entry.emuUnit >= 0 + && entry.emuUnit < cdSlots.size()) { + slot = entry.emuUnit; + break; + } + } + } + if (slot < 0) { + for (int i = 0; i < cdSlots.size(); i++) { + if (cdSlots[i].inUse || !cdSlots[i].path.isEmpty()) { + slot = i; + break; + } + } + } + selectCdSlot(slot >= 0 ? slot : 0, false); + } + void ensureCustomRomBoards() { if (customRomBoards.size() == MaxRomBoards) { @@ -13984,6 +14023,7 @@ private: entry.hardfileTail = QStringLiteral(",ide0"); if (showCdDriveMountDialog(&entry, QStringLiteral("Add CD Drive"))) { addMountEntry(entry); + selectCdSlot(entry.emuUnit); } } @@ -14254,6 +14294,9 @@ private: } if (accepted) { updateMountItem(item, entry); + if (entry.kind == QStringLiteral("cd")) { + selectCdSlot(entry.emuUnit); + } } } @@ -16262,6 +16305,7 @@ private: for (const WinUaeQtConfig::Setting &setting : loaded.orderedSettings()) { applySetting(setting.key, setting.value); } + selectPreferredCdSlotAfterLoad(); updateOutputControlState(); updateMountButtons(); refreshInputMappingList();