GUI: do not set ins type if it is unknown

This commit is contained in:
tildearrow 2023-12-18 10:56:45 -05:00
parent 56f020e77b
commit 75323be54e

View file

@ -2885,14 +2885,8 @@ void FurnaceGUI::drawInsEdit() {
ImGui::Text("Type"); ImGui::Text("Type");
ImGui::TableNextColumn(); ImGui::TableNextColumn();
if (ins->type>=DIV_INS_MAX) ins->type=DIV_INS_FM;
int insType=ins->type; int insType=ins->type;
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
/*
if (ImGui::Combo("##Type",&insType,insTypes,DIV_INS_MAX,DIV_INS_MAX)) {
ins->type=(DivInstrumentType)insType;
}
*/
bool warnType=true; bool warnType=true;
for (DivInstrumentType i: e->getPossibleInsTypes()) { for (DivInstrumentType i: e->getPossibleInsTypes()) {
if (i==insType) { if (i==insType) {
@ -2901,7 +2895,7 @@ void FurnaceGUI::drawInsEdit() {
} }
pushWarningColor(warnType,warnType && failedNoteOn); pushWarningColor(warnType,warnType && failedNoteOn);
if (ImGui::BeginCombo("##Type",insTypes[insType][0])) { if (ImGui::BeginCombo("##Type",(insType>=DIV_INS_MAX)?"Unknown":insTypes[insType][0])) {
std::vector<DivInstrumentType> insTypeList; std::vector<DivInstrumentType> insTypeList;
if (settings.displayAllInsTypes) { if (settings.displayAllInsTypes) {
for (int i=0; insTypes[i][0]; i++) { for (int i=0; insTypes[i][0]; i++) {
@ -6521,6 +6515,12 @@ void FurnaceGUI::drawInsEdit() {
ins->type==DIV_INS_VRC6) { ins->type==DIV_INS_VRC6) {
insTabSample(ins); insTabSample(ins);
} }
if (ins->type>=DIV_INS_MAX) {
if (ImGui::BeginTabItem("Error")) {
ImGui::Text("invalid instrument type! change it first.");
ImGui::EndTabItem();
}
}
ImGui::EndTabBar(); ImGui::EndTabBar();
} }
if (settings.insEditColorize) { if (settings.insEditColorize) {