From 515a657b91794274f11c0f0f30eb60d64269554f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 6 Aug 2023 04:15:02 -0500 Subject: [PATCH] GUI: don't show pan effects if can't pan issue #1331 --- src/gui/effectList.cpp | 56 +++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/src/gui/effectList.cpp b/src/gui/effectList.cpp index 2d1bd1f1..0be9b159 100644 --- a/src/gui/effectList.cpp +++ b/src/gui/effectList.cpp @@ -47,22 +47,56 @@ void FurnaceGUI::drawEffectList() { const char* prevName=NULL; for (int i=0; i<256; i++) { const char* name=e->getEffectDesc(i,cursor.xCoarse); - bool effectShow = true; + bool effectShow=true; if (name==prevName) { continue; } prevName=name; switch (fxColors[i]) { - case GUI_COLOR_PATTERN_EFFECT_MISC: effectShow = effectsShow[8]; break; - case GUI_COLOR_PATTERN_EFFECT_SONG: effectShow = effectsShow[1]; break; - case GUI_COLOR_PATTERN_EFFECT_SPEED: effectShow = effectsShow[3]; break; - case GUI_COLOR_PATTERN_EFFECT_TIME: effectShow = effectsShow[2]; break; - case GUI_COLOR_PATTERN_EFFECT_PITCH: effectShow = effectsShow[0]; break; - case GUI_COLOR_PATTERN_EFFECT_PANNING: effectShow = effectsShow[4]; break; - case GUI_COLOR_PATTERN_EFFECT_VOLUME: effectShow = effectsShow[5]; break; - case GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY: effectShow = effectsShow[6]; break; - case GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY: effectShow = effectsShow[7]; break; - default: effectShow = true; break; + case GUI_COLOR_PATTERN_EFFECT_MISC: + effectShow=effectsShow[8]; + break; + case GUI_COLOR_PATTERN_EFFECT_SONG: + effectShow=effectsShow[1]; + break; + case GUI_COLOR_PATTERN_EFFECT_SPEED: + effectShow=effectsShow[3]; + break; + case GUI_COLOR_PATTERN_EFFECT_TIME: + effectShow=effectsShow[2]; + break; + case GUI_COLOR_PATTERN_EFFECT_PITCH: + effectShow=effectsShow[0]; + break; + case GUI_COLOR_PATTERN_EFFECT_PANNING: + effectShow=effectsShow[4]; + break; + case GUI_COLOR_PATTERN_EFFECT_VOLUME: + effectShow=effectsShow[5]; + break; + case GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY: + effectShow=effectsShow[6]; + break; + case GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY: + effectShow=effectsShow[7]; + break; + default: + effectShow=true; + break; + } + if (fxColors[i]==GUI_COLOR_PATTERN_EFFECT_PANNING) { + DivDispatch* dispatch=e->getDispatch(e->dispatchOfChan[cursor.xCoarse]); + if (dispatch!=NULL) { + int outputs=dispatch->getOutputCount(); + if (outputs<2) { + effectShow=false; + } + if (outputs<3) { + if (i>=0x88 && i<=0x8f) { + effectShow=false; + } + } + } } if (name!=NULL && effectShow) { ImGui::TableNextRow();