From 603249573a0d57749e30eaa0c332005f6c5eb63d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 21 May 2024 17:26:04 -0500 Subject: [PATCH] GUI: separate wantScrollList issue #1894 --- src/gui/dataList.cpp | 6 +++--- src/gui/doAction.cpp | 46 ++++++++++++++++++++++---------------------- src/gui/gui.cpp | 8 ++++++-- src/gui/gui.h | 3 ++- src/gui/insEdit.cpp | 2 +- 5 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 9fb9f4042..e86e830e8 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -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(); } diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 7dd184691..2820c7355 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -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; jsong.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: diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 71cae3196..401916f33 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -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), diff --git a/src/gui/gui.h b/src/gui/gui.h index 3c23ff83e..92a6b428b 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -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; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index e36f66f39..6ba5938e7 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -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;