diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 41c7b9552..74a303542 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3788,6 +3788,7 @@ FurnaceGUI::FurnaceGUI(): preserveChanPos(false), vgmExportVersion(0x171), drawHalt(10), + macroPointSize(16), curFileDialog(GUI_FILE_OPEN), warnAction(GUI_WARN_OPEN), postWarnAction(GUI_WARN_GENERIC), diff --git a/src/gui/gui.h b/src/gui/gui.h index 14b735b22..31ab566f1 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -739,6 +739,7 @@ class FurnaceGUI { bool willExport[32]; int vgmExportVersion; int drawHalt; + int macroPointSize; FurnaceGUIFileDialogs curFileDialog; FurnaceGUIWarnings warnAction; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index fbd843581..0355e7fe7 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1128,6 +1128,11 @@ void FurnaceGUI::drawGBEnv(unsigned char vol, unsigned char len, unsigned char s processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y); \ } \ if (displayLoop) { \ + if (ImGui::IsItemHovered() && ctrlWheeling) { \ + macroPointSize+=wheelY; \ + if (macroPointSize<1) macroPointSize=1; \ + if (macroPointSize>256) macroPointSize=256; \ + } \ if (drawSlider) { \ ImGui::SameLine(); \ CWVSliderInt("##IMacroPos_" macroName,ImVec2(20.0f*dpiScale,displayHeight*dpiScale),sliderVal,sliderLow,sliderHigh); \ @@ -1262,7 +1267,7 @@ if (ImGui::BeginTable("MacroSpace",2)) { \ ImGui::Dummy(ImVec2(120.0f*dpiScale,dpiScale)); \ ImGui::TableNextColumn(); \ float availableWidth=ImGui::GetContentRegionAvail().x-reservedSpace; \ - int totalFit=MIN(127,availableWidth/(16*dpiScale)); \ + int totalFit=MIN(127,availableWidth/MAX(1,macroPointSize*dpiScale)); \ if (macroDragScroll>127-totalFit) { \ macroDragScroll=127-totalFit; \ } \ diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 53379c992..7882e53c4 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -1268,6 +1268,17 @@ void FurnaceGUI::drawSampleEdit() { } if (ImGui::IsItemHovered()) { + if (ctrlWheeling) { + double zoomPercent=100.0/sampleZoom; + zoomPercent+=wheelY*10.0; + if (zoomPercent>10000.0) zoomPercent=10000.0; + if (zoomPercent<1.0) zoomPercent=1.0; + sampleZoom=100.0/zoomPercent; + if (sampleZoom<0.01) sampleZoom=0.01; + sampleZoomAuto=false; + updateSampleTex=true; + } + int posX=-1; int posY=0; ImVec2 pos=ImGui::GetMousePos();