GUI: separate wantScrollList

issue #1894
This commit is contained in:
tildearrow 2024-05-21 17:26:04 -05:00
parent 57185c6da9
commit 603249573a
5 changed files with 35 additions and 30 deletions

View file

@ -113,7 +113,7 @@ void FurnaceGUI::insListItem(int i, int dir, int asset) {
if (settings.insFocusesPattern && patternOpen)
nextWindow=GUI_WINDOW_PATTERN;
}
if (wantScrollList && curIns==i) ImGui::SetScrollHereY();
if (wantScrollListIns && curIns==i) ImGui::SetScrollHereY();
if (ImGui::IsItemHovered() && i>=0 && !mobileUI) {
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_TEXT]);
ImGui::SetTooltip("%s",insType);
@ -183,7 +183,7 @@ void FurnaceGUI::waveListItem(int i, float* wavePreview, int dir, int asset) {
}
ImGui::PopStyleVar();
curPos.x+=ImGui::CalcTextSize("2222").x;
if (wantScrollList && curWave==i) ImGui::SetScrollHereY();
if (wantScrollListWave && curWave==i) ImGui::SetScrollHereY();
if (ImGui::IsItemHovered()) {
if (ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) {
waveEditOpen=true;
@ -272,7 +272,7 @@ void FurnaceGUI::sampleListItem(int i, int dir, int asset) {
ImGui::PopStyleColor();
ImGui::EndPopup();
}
if (wantScrollList && curSample==i) ImGui::SetScrollHereY();
if (wantScrollListSample && curSample==i) ImGui::SetScrollHereY();
ImGui::PopID();
}

View file

@ -143,7 +143,7 @@ void FurnaceGUI::doAction(int what) {
curIns=-1;
}
wavePreviewInit=true;
wantScrollList=true;
wantScrollListIns=true;
updateFMPreview=true;
break;
case GUI_ACTION_INS_DOWN:
@ -151,7 +151,7 @@ void FurnaceGUI::doAction(int what) {
curIns=((int)e->song.ins.size())-1;
}
wavePreviewInit=true;
wantScrollList=true;
wantScrollListIns=true;
updateFMPreview=true;
break;
case GUI_ACTION_STEP_UP:
@ -706,7 +706,7 @@ void FurnaceGUI::doAction(int what) {
e->song.ins[curIns]->esfm.op[i].outLvl=0;
}
}
wantScrollList=true;
wantScrollListIns=true;
MARK_MODIFIED;
wavePreviewInit=true;
updateFMPreview=true;
@ -720,7 +720,7 @@ void FurnaceGUI::doAction(int what) {
showError("too many instruments!");
} else {
(*e->song.ins[curIns])=(*e->song.ins[prevIns]);
wantScrollList=true;
wantScrollListIns=true;
MARK_MODIFIED;
wavePreviewInit=true;
updateFMPreview=true;
@ -742,21 +742,21 @@ void FurnaceGUI::doAction(int what) {
case GUI_ACTION_INS_LIST_MOVE_UP:
if (e->moveInsUp(curIns)) {
curIns--;
wantScrollList=true;
wantScrollListIns=true;
MARK_MODIFIED;
}
break;
case GUI_ACTION_INS_LIST_MOVE_DOWN:
if (e->moveInsDown(curIns)) {
curIns++;
wantScrollList=true;
wantScrollListIns=true;
MARK_MODIFIED;
}
break;
case GUI_ACTION_INS_LIST_DELETE:
if (curIns>=0 && curIns<(int)e->song.ins.size()) {
e->delInstrument(curIns);
wantScrollList=true;
wantScrollListIns=true;
MARK_MODIFIED;
if (curIns>=(int)e->song.ins.size()) {
curIns--;
@ -768,13 +768,13 @@ void FurnaceGUI::doAction(int what) {
break;
case GUI_ACTION_INS_LIST_UP:
if (--curIns<0) curIns=0;
wantScrollList=true;
wantScrollListIns=true;
wavePreviewInit=true;
updateFMPreview=true;
break;
case GUI_ACTION_INS_LIST_DOWN:
if (++curIns>=(int)e->song.ins.size()) curIns=((int)e->song.ins.size())-1;
wantScrollList=true;
wantScrollListIns=true;
wavePreviewInit=true;
updateFMPreview=true;
break;
@ -824,7 +824,7 @@ void FurnaceGUI::doAction(int what) {
if (curWave==-1) {
showError("too many wavetables!");
} else {
wantScrollList=true;
wantScrollListWave=true;
e->song.wave[curWave]->len=finalWidth;
e->song.wave[curWave]->max=finalHeight-1;
for (int j=0; j<finalWidth; j++) {
@ -843,7 +843,7 @@ void FurnaceGUI::doAction(int what) {
showError("too many wavetables!");
} else {
(*e->song.wave[curWave])=(*e->song.wave[prevWave]);
wantScrollList=true;
wantScrollListWave=true;
MARK_MODIFIED;
RESET_WAVE_MACRO_ZOOM;
}
@ -867,14 +867,14 @@ void FurnaceGUI::doAction(int what) {
case GUI_ACTION_WAVE_LIST_MOVE_UP:
if (e->moveWaveUp(curWave)) {
curWave--;
wantScrollList=true;
wantScrollListWave=true;
MARK_MODIFIED;
}
break;
case GUI_ACTION_WAVE_LIST_MOVE_DOWN:
if (e->moveWaveDown(curWave)) {
curWave++;
wantScrollList=true;
wantScrollListWave=true;
MARK_MODIFIED;
}
break;
@ -882,7 +882,7 @@ void FurnaceGUI::doAction(int what) {
if (curWave>=0 && curWave<(int)e->song.wave.size()) {
e->delWave(curWave);
MARK_MODIFIED;
wantScrollList=true;
wantScrollListWave=true;
if (curWave>=(int)e->song.wave.size()) {
curWave--;
}
@ -893,11 +893,11 @@ void FurnaceGUI::doAction(int what) {
break;
case GUI_ACTION_WAVE_LIST_UP:
if (--curWave<0) curWave=0;
wantScrollList=true;
wantScrollListWave=true;
break;
case GUI_ACTION_WAVE_LIST_DOWN:
if (++curWave>=(int)e->song.wave.size()) curWave=((int)e->song.wave.size())-1;
wantScrollList=true;
wantScrollListWave=true;
break;
case GUI_ACTION_WAVE_LIST_DIR_VIEW:
waveListDir=!waveListDir;
@ -908,7 +908,7 @@ void FurnaceGUI::doAction(int what) {
if (curSample==-1) {
showError("too many samples!");
} else {
wantScrollList=true;
wantScrollListSample=true;
MARK_MODIFIED;
}
updateSampleTex=true;
@ -941,7 +941,7 @@ void FurnaceGUI::doAction(int what) {
}
e->renderSamples();
});
wantScrollList=true;
wantScrollListSample=true;
MARK_MODIFIED;
}
updateSampleTex=true;
@ -968,7 +968,7 @@ void FurnaceGUI::doAction(int what) {
case GUI_ACTION_SAMPLE_LIST_MOVE_UP:
if (e->moveSampleUp(curSample)) {
curSample--;
wantScrollList=true;
wantScrollListSample=true;
updateSampleTex=true;
MARK_MODIFIED;
}
@ -976,14 +976,14 @@ void FurnaceGUI::doAction(int what) {
case GUI_ACTION_SAMPLE_LIST_MOVE_DOWN:
if (e->moveSampleDown(curSample)) {
curSample++;
wantScrollList=true;
wantScrollListSample=true;
updateSampleTex=true;
MARK_MODIFIED;
}
break;
case GUI_ACTION_SAMPLE_LIST_DELETE:
e->delSample(curSample);
wantScrollList=true;
wantScrollListSample=true;
MARK_MODIFIED;
if (curSample>=(int)e->song.sample.size()) {
curSample--;
@ -995,12 +995,12 @@ void FurnaceGUI::doAction(int what) {
break;
case GUI_ACTION_SAMPLE_LIST_UP:
if (--curSample<0) curSample=0;
wantScrollList=true;
wantScrollListSample=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;
wantScrollListSample=true;
updateSampleTex=true;
break;
case GUI_ACTION_SAMPLE_LIST_PREVIEW:

View file

@ -6605,7 +6605,9 @@ bool FurnaceGUI::loop() {
wheelX=0;
wheelY=0;
wantScrollList=false;
wantScrollListIns=false;
wantScrollListWave=false;
wantScrollListSample=false;
pressedPoints.clear();
releasedPoints.clear();
@ -7533,9 +7535,11 @@ FurnaceGUI::FurnaceGUI():
preserveChanPos(false),
sysDupCloneChannels(true),
sysDupEnd(false),
wantScrollList(false),
noteInputPoly(true),
notifyWaveChange(false),
wantScrollListIns(false),
wantScrollListWave(false),
wantScrollListSample(false),
displayPendingIns(false),
pendingInsSingle(false),
displayPendingRawSample(false),

View file

@ -1601,7 +1601,8 @@ class FurnaceGUI {
bool vgmExportDirectStream, displayInsTypeList, displayWaveSizeList;
bool portrait, injectBackUp, mobileMenuOpen, warnColorPushed;
bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu;
bool displayNew, displayExport, displayPalette, fullScreen, preserveChanPos, sysDupCloneChannels, sysDupEnd, wantScrollList, noteInputPoly, notifyWaveChange;
bool displayNew, displayExport, displayPalette, fullScreen, preserveChanPos, sysDupCloneChannels, sysDupEnd, noteInputPoly, notifyWaveChange;
bool wantScrollListIns, wantScrollListWave, wantScrollListSample;
bool displayPendingIns, pendingInsSingle, displayPendingRawSample, snesFilterHex, modTableHex, displayEditString;
bool changeCoarse;
bool mobileEdit;

View file

@ -6718,7 +6718,7 @@ void FurnaceGUI::drawInsEdit() {
if (curWave==-1) {
showError("too many wavetables!");
} else {
wantScrollList=true;
wantScrollListWave=true;
MARK_MODIFIED;
RESET_WAVE_MACRO_ZOOM;
nextWindow=GUI_WINDOW_WAVE_EDIT;