GUI: scroll instrument/wave/sample list when

selecting item
This commit is contained in:
tildearrow 2022-05-19 13:06:26 -05:00
parent 2ada4ee393
commit 769a89852f
4 changed files with 47 additions and 7 deletions

View file

@ -116,10 +116,16 @@ void FurnaceGUI::doAction(int what) {
}
break;
case GUI_ACTION_INS_UP:
if (--curIns<-1) curIns=-1;
if (--curIns<-1) {
curIns=-1;
}
wantScrollList=true;
break;
case GUI_ACTION_INS_DOWN:
if (++curIns>=(int)e->song.ins.size()) curIns=((int)e->song.ins.size())-1;
if (++curIns>=(int)e->song.ins.size()) {
curIns=((int)e->song.ins.size())-1;
}
wantScrollList=true;
break;
case GUI_ACTION_STEP_UP:
if (++editStep>64) editStep=64;
@ -528,6 +534,7 @@ void FurnaceGUI::doAction(int what) {
if (curIns==-1) {
showError("too many instruments!");
} else {
wantScrollList=true;
MARK_MODIFIED;
}
break;
@ -539,6 +546,7 @@ void FurnaceGUI::doAction(int what) {
showError("too many instruments!");
} else {
(*e->song.ins[curIns])=(*e->song.ins[prevIns]);
wantScrollList=true;
MARK_MODIFIED;
}
}
@ -553,14 +561,21 @@ void FurnaceGUI::doAction(int what) {
if (curIns>=0 && curIns<(int)e->song.ins.size()) openFileDialog(GUI_FILE_INS_SAVE);
break;
case GUI_ACTION_INS_LIST_MOVE_UP:
if (e->moveInsUp(curIns)) curIns--;
if (e->moveInsUp(curIns)) {
curIns--;
wantScrollList=true;
}
break;
case GUI_ACTION_INS_LIST_MOVE_DOWN:
if (e->moveInsDown(curIns)) curIns++;
if (e->moveInsDown(curIns)) {
curIns++;
wantScrollList=true;
}
break;
case GUI_ACTION_INS_LIST_DELETE:
if (curIns>=0 && curIns<(int)e->song.ins.size()) {
e->delInstrument(curIns);
wantScrollList=true;
MARK_MODIFIED;
if (curIns>=(int)e->song.ins.size()) {
curIns--;
@ -572,9 +587,11 @@ void FurnaceGUI::doAction(int what) {
break;
case GUI_ACTION_INS_LIST_UP:
if (--curIns<0) curIns=0;
wantScrollList=true;
break;
case GUI_ACTION_INS_LIST_DOWN:
if (++curIns>=(int)e->song.ins.size()) curIns=((int)e->song.ins.size())-1;
wantScrollList=true;
break;
case GUI_ACTION_WAVE_LIST_ADD:
@ -582,6 +599,7 @@ void FurnaceGUI::doAction(int what) {
if (curWave==-1) {
showError("too many wavetables!");
} else {
wantScrollList=true;
MARK_MODIFIED;
}
break;
@ -593,6 +611,7 @@ void FurnaceGUI::doAction(int what) {
showError("too many wavetables!");
} else {
(*e->song.wave[curWave])=(*e->song.wave[prevWave]);
wantScrollList=true;
MARK_MODIFIED;
}
}
@ -604,15 +623,22 @@ void FurnaceGUI::doAction(int what) {
if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE);
break;
case GUI_ACTION_WAVE_LIST_MOVE_UP:
if (e->moveWaveUp(curWave)) curWave--;
if (e->moveWaveUp(curWave)) {
curWave--;
wantScrollList=true;
}
break;
case GUI_ACTION_WAVE_LIST_MOVE_DOWN:
if (e->moveWaveDown(curWave)) curWave++;
if (e->moveWaveDown(curWave)) {
curWave++;
wantScrollList=true;
}
break;
case GUI_ACTION_WAVE_LIST_DELETE:
if (curWave>=0 && curWave<(int)e->song.wave.size()) {
e->delWave(curWave);
MARK_MODIFIED;
wantScrollList=true;
if (curWave>=(int)e->song.wave.size()) {
curWave--;
}
@ -623,9 +649,11 @@ void FurnaceGUI::doAction(int what) {
break;
case GUI_ACTION_WAVE_LIST_UP:
if (--curWave<0) curWave=0;
wantScrollList=true;
break;
case GUI_ACTION_WAVE_LIST_DOWN:
if (++curWave>=(int)e->song.wave.size()) curWave=((int)e->song.wave.size())-1;
wantScrollList=true;
break;
case GUI_ACTION_SAMPLE_LIST_ADD:
@ -633,6 +661,7 @@ void FurnaceGUI::doAction(int what) {
if (curSample==-1) {
showError("too many samples!");
} else {
wantScrollList=true;
MARK_MODIFIED;
}
updateSampleTex=true;
@ -660,6 +689,7 @@ void FurnaceGUI::doAction(int what) {
}
e->renderSamples();
});
wantScrollList=true;
MARK_MODIFIED;
}
updateSampleTex=true;
@ -674,17 +704,20 @@ void FurnaceGUI::doAction(int what) {
case GUI_ACTION_SAMPLE_LIST_MOVE_UP:
if (e->moveSampleUp(curSample)) {
curSample--;
wantScrollList=true;
updateSampleTex=true;
}
break;
case GUI_ACTION_SAMPLE_LIST_MOVE_DOWN:
if (e->moveSampleDown(curSample)) {
curSample++;
wantScrollList=true;
updateSampleTex=true;
}
break;
case GUI_ACTION_SAMPLE_LIST_DELETE:
e->delSample(curSample);
wantScrollList=true;
MARK_MODIFIED;
if (curSample>=(int)e->song.sample.size()) {
curSample--;
@ -696,10 +729,12 @@ void FurnaceGUI::doAction(int what) {
break;
case GUI_ACTION_SAMPLE_LIST_UP:
if (--curSample<0) curSample=0;
wantScrollList=true;
updateSampleTex=true;
break;
case GUI_ACTION_SAMPLE_LIST_DOWN:
if (++curSample>=(int)e->song.sample.size()) curSample=((int)e->song.sample.size())-1;
wantScrollList=true;
updateSampleTex=true;
break;
case GUI_ACTION_SAMPLE_LIST_PREVIEW: