diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 87bbc0b40..2338bf556 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3616,28 +3616,29 @@ bool FurnaceGUI::loop() { if (!e->getWarnings().empty()) { showWarning(e->getWarnings(),GUI_WARN_GENERIC); } - int instrumentCount = -1; + int instrumentCount=-1; for (DivInstrument* i: instruments) { - instrumentCount = e->addInstrumentPtr(i); + instrumentCount=e->addInstrumentPtr(i); } - if (instrumentCount >= 0) { - curIns = instrumentCount - 1; + if (instrumentCount>=0 && settings.selectAssetOnLoad) { + curIns=instrumentCount-1; } nextWindow=GUI_WINDOW_INS_LIST; MARK_MODIFIED; } else if ((droppedWave=e->waveFromFile(ev.drop.file,false))!=NULL) { - int waveCount = -1; - waveCount = e->addWavePtr(droppedWave); - if (waveCount >= 0) { - curWave = waveCount - 1; + int waveCount=-1; + waveCount=e->addWavePtr(droppedWave); + if (waveCount>=0 && settings.selectAssetOnLoad) { + curWave=waveCount-1; } nextWindow=GUI_WINDOW_WAVE_LIST; MARK_MODIFIED; } else if ((droppedSample=e->sampleFromFile(ev.drop.file))!=NULL) { - int sampleCount = -1; - sampleCount = e->addSamplePtr(droppedSample); - if (sampleCount >= 0) { - curSample = sampleCount; + int sampleCount=-1; + sampleCount=e->addSamplePtr(droppedSample); + if (sampleCount>=0 && settings.selectAssetOnLoad) { + curSample=sampleCount; + updateSampleTex=true; } nextWindow=GUI_WINDOW_SAMPLE_LIST; MARK_MODIFIED; @@ -5168,12 +5169,12 @@ bool FurnaceGUI::loop() { displayPendingIns=true; pendingInsSingle=false; } else { // load the only instrument - int instrumentCount = -1; + int instrumentCount=-1; for (DivInstrument* i: instruments) { - instrumentCount = e->addInstrumentPtr(i); + instrumentCount=e->addInstrumentPtr(i); } - if (instrumentCount >= 0) { - curIns = instrumentCount - 1; + if (instrumentCount>=0 && settings.selectAssetOnLoad) { + curIns=instrumentCount-1; } } } @@ -5223,8 +5224,8 @@ bool FurnaceGUI::loop() { showError("cannot load wavetable! ("+e->getLastError()+")"); } } else { - int waveCount = -1; - waveCount = e->addWavePtr(wave); + int waveCount=-1; + waveCount=e->addWavePtr(wave); if (waveCount==-1) { if (fileDialog->getFileName().size()>1) { warn=true; @@ -5233,7 +5234,9 @@ bool FurnaceGUI::loop() { showError("cannot load wavetable! ("+e->getLastError()+")"); } } else { - curWave = waveCount -1; + if (settings.selectAssetOnLoad) { + curWave=waveCount-1; + } MARK_MODIFIED; RESET_WAVE_MACRO_ZOOM; } @@ -7776,15 +7779,15 @@ FurnaceGUI::FurnaceGUI(): waveGenAmp[0]=1.0f; waveGenFMCon0[0]=false; - waveGenFMCon1[0]= true; - waveGenFMCon2[1]= true; - waveGenFMCon3[2] = true; - waveGenFMCon4[0]= false; + waveGenFMCon1[0]=true; + waveGenFMCon2[1]=true; + waveGenFMCon3[2]=true; + waveGenFMCon4[0]=false; - waveGenFMCon0[4] = false; - waveGenFMCon1[4] = false; - waveGenFMCon2[4] = false; - waveGenFMCon3[4] = true; + waveGenFMCon0[4]=false; + waveGenFMCon1[4]=false; + waveGenFMCon2[4]=false; + waveGenFMCon3[4]=true; memset(keyHit,0,sizeof(float)*DIV_MAX_CHANS); memset(keyHit1,0,sizeof(float)*DIV_MAX_CHANS); diff --git a/src/gui/gui.h b/src/gui/gui.h index 645495a2d..8de908a12 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1638,6 +1638,7 @@ class FurnaceGUI { int fontBitmap; int fontAutoHint; int fontAntiAlias; + int selectAssetOnLoad; unsigned int maxUndoSteps; String mainFontPath; String headFontPath; @@ -1832,6 +1833,7 @@ class FurnaceGUI { fontBitmap(0), fontAutoHint(1), fontAntiAlias(1), + selectAssetOnLoad(1), maxUndoSteps(100), mainFontPath(""), headFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 4c9cfad61..d5cf926e5 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -2370,6 +2370,12 @@ void FurnaceGUI::drawSettings() { settingsChanged=true; } + bool selectAssetOnLoadB=settings.selectAssetOnLoad; + if (ImGui::Checkbox("Select asset after opening one",&selectAssetOnLoadB)) { + settings.selectAssetOnLoad=selectAssetOnLoadB; + settingsChanged=true; + } + END_SECTION; } CONFIG_SECTION("Appearance") { @@ -3799,6 +3805,7 @@ void FurnaceGUI::syncSettings() { settings.fontBitmap=e->getConfInt("fontBitmap",0); settings.fontAutoHint=e->getConfInt("fontAutoHint",1); settings.fontAntiAlias=e->getConfInt("fontAntiAlias",1); + settings.selectAssetOnLoad=e->getConfInt("selectAssetOnLoad",1); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.headFontSize,2,96); @@ -3964,6 +3971,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.fontBitmap,0,1); clampSetting(settings.fontAutoHint,0,2); clampSetting(settings.fontAntiAlias,0,1); + clampSetting(settings.selectAssetOnLoad,0,1); if (settings.exportLoops<0.0) settings.exportLoops=0.0; if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0; @@ -4244,6 +4252,7 @@ void FurnaceGUI::commitSettings() { e->setConf("fontBitmap",settings.fontBitmap); e->setConf("fontAutoHint",settings.fontAutoHint); e->setConf("fontAntiAlias",settings.fontAntiAlias); + e->setConf("selectAssetOnLoad",settings.selectAssetOnLoad); // colors for (int i=0; i