GUI: add setting to bring old macro vSlider back
This commit is contained in:
parent
76adccc0fc
commit
613b538fb9
|
@ -890,6 +890,7 @@ class FurnaceGUI {
|
|||
int hiddenSystems;
|
||||
int horizontalDataView;
|
||||
int noMultiSystem;
|
||||
int oldMacroVSlider;
|
||||
unsigned int maxUndoSteps;
|
||||
String mainFontPath;
|
||||
String patFontPath;
|
||||
|
@ -974,6 +975,7 @@ class FurnaceGUI {
|
|||
hiddenSystems(0),
|
||||
horizontalDataView(0),
|
||||
noMultiSystem(0),
|
||||
oldMacroVSlider(0),
|
||||
maxUndoSteps(100),
|
||||
mainFontPath(""),
|
||||
patFontPath(""),
|
||||
|
|
|
@ -1077,7 +1077,7 @@ void FurnaceGUI::drawMacros(std::vector<FurnaceGUIMacroDesc>& macros) {
|
|||
float loopIndicator[256];
|
||||
int index=0;
|
||||
|
||||
float reservedSpace=ImGui::GetStyle().ScrollbarSize;
|
||||
float reservedSpace=(settings.oldMacroVSlider)?(20.0f*dpiScale+ImGui::GetStyle().ItemSpacing.x):ImGui::GetStyle().ScrollbarSize;
|
||||
|
||||
if (ImGui::BeginTable("MacroSpace",2)) {
|
||||
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0);
|
||||
|
@ -1215,24 +1215,37 @@ void FurnaceGUI::drawMacros(std::vector<FurnaceGUIMacroDesc>& macros) {
|
|||
|
||||
// slider
|
||||
if (!i.isBitfield) {
|
||||
ImS64 scrollV=(i.max-i.min-i.macro->vZoom)-i.macro->vScroll;
|
||||
ImS64 availV=i.macro->vZoom;
|
||||
ImS64 contentsV=(i.max-i.min);
|
||||
if (settings.oldMacroVSlider) {
|
||||
ImGui::SameLine(0.0f);
|
||||
if (ImGui::VSliderInt("IMacroVScroll",ImVec2(20.0f*dpiScale,i.height*dpiScale),&i.macro->vScroll,0,(i.max-i.min)-i.macro->vZoom,"")) {
|
||||
if (i.macro->vScroll<0) i.macro->vScroll=0;
|
||||
if (i.macro->vScroll>((i.max-i.min)-i.macro->vZoom)) i.macro->vScroll=(i.max-i.min)-i.macro->vZoom;
|
||||
}
|
||||
if (ImGui::IsItemHovered() && ctrlWheeling) {
|
||||
i.macro->vScroll+=wheelY*(1+(i.macro->vZoom>>4));
|
||||
if (i.macro->vScroll<0) i.macro->vScroll=0;
|
||||
if (i.macro->vScroll>((i.max-i.min)-i.macro->vZoom)) i.macro->vScroll=(i.max-i.min)-i.macro->vZoom;
|
||||
}
|
||||
} else {
|
||||
ImS64 scrollV=(i.max-i.min-i.macro->vZoom)-i.macro->vScroll;
|
||||
ImS64 availV=i.macro->vZoom;
|
||||
ImS64 contentsV=(i.max-i.min);
|
||||
|
||||
ImGui::SameLine(0.0f);
|
||||
ImGui::SetCursorPosX(ImGui::GetCursorPosX()-ImGui::GetStyle().ItemSpacing.x);
|
||||
ImRect scrollbarPos=ImRect(ImGui::GetCursorScreenPos(),ImGui::GetCursorScreenPos());
|
||||
scrollbarPos.Max.x+=ImGui::GetStyle().ScrollbarSize;
|
||||
scrollbarPos.Max.y+=i.height*dpiScale;
|
||||
ImGui::Dummy(ImVec2(ImGui::GetStyle().ScrollbarSize,i.height*dpiScale));
|
||||
if (ImGui::IsItemHovered() && ctrlWheeling) {
|
||||
i.macro->vScroll+=wheelY*(1+(i.macro->vZoom>>4));
|
||||
if (i.macro->vScroll<0) i.macro->vScroll=0;
|
||||
if (i.macro->vScroll>((i.max-i.min)-i.macro->vZoom)) i.macro->vScroll=(i.max-i.min)-i.macro->vZoom;
|
||||
}
|
||||
ImGui::SameLine(0.0f);
|
||||
ImGui::SetCursorPosX(ImGui::GetCursorPosX()-ImGui::GetStyle().ItemSpacing.x);
|
||||
ImRect scrollbarPos=ImRect(ImGui::GetCursorScreenPos(),ImGui::GetCursorScreenPos());
|
||||
scrollbarPos.Max.x+=ImGui::GetStyle().ScrollbarSize;
|
||||
scrollbarPos.Max.y+=i.height*dpiScale;
|
||||
ImGui::Dummy(ImVec2(ImGui::GetStyle().ScrollbarSize,i.height*dpiScale));
|
||||
if (ImGui::IsItemHovered() && ctrlWheeling) {
|
||||
i.macro->vScroll+=wheelY*(1+(i.macro->vZoom>>4));
|
||||
if (i.macro->vScroll<0) i.macro->vScroll=0;
|
||||
if (i.macro->vScroll>((i.max-i.min)-i.macro->vZoom)) i.macro->vScroll=(i.max-i.min)-i.macro->vZoom;
|
||||
}
|
||||
|
||||
if (ImGui::ScrollbarEx(scrollbarPos,ImGui::GetID("IMacroVScroll"),ImGuiAxis_Y,&scrollV,availV,contentsV,0)) {
|
||||
i.macro->vScroll=(i.max-i.min-i.macro->vZoom)-scrollV;
|
||||
if (ImGui::ScrollbarEx(scrollbarPos,ImGui::GetID("IMacroVScroll"),ImGuiAxis_Y,&scrollV,availV,contentsV,0)) {
|
||||
i.macro->vScroll=(i.max-i.min-i.macro->vZoom)-scrollV;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1147,6 +1147,11 @@ void FurnaceGUI::drawSettings() {
|
|||
settings.sampleLayout=sampleLayoutB;
|
||||
}
|
||||
|
||||
bool oldMacroVSliderB=settings.oldMacroVSlider;
|
||||
if (ImGui::Checkbox("Use classic macro editor vertical slider",&oldMacroVSliderB)) {
|
||||
settings.oldMacroVSlider=oldMacroVSliderB;
|
||||
}
|
||||
|
||||
bool roundedWindowsB=settings.roundedWindows;
|
||||
if (ImGui::Checkbox("Rounded window corners",&roundedWindowsB)) {
|
||||
settings.roundedWindows=roundedWindowsB;
|
||||
|
@ -1849,6 +1854,7 @@ void FurnaceGUI::syncSettings() {
|
|||
settings.hiddenSystems=e->getConfInt("hiddenSystems",0);
|
||||
settings.horizontalDataView=e->getConfInt("horizontalDataView",0);
|
||||
settings.noMultiSystem=e->getConfInt("noMultiSystem",0);
|
||||
settings.oldMacroVSlider=e->getConfInt("oldMacroVSlider",0);
|
||||
|
||||
clampSetting(settings.mainFontSize,2,96);
|
||||
clampSetting(settings.patFontSize,2,96);
|
||||
|
@ -1920,7 +1926,8 @@ void FurnaceGUI::syncSettings() {
|
|||
clampSetting(settings.moveWindowTitle,0,1);
|
||||
clampSetting(settings.hiddenSystems,0,1);
|
||||
clampSetting(settings.horizontalDataView,0,1);
|
||||
clampSetting(settings.noMultiSystem,0,1)
|
||||
clampSetting(settings.noMultiSystem,0,1);
|
||||
clampSetting(settings.oldMacroVSlider,0,1);
|
||||
|
||||
settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys",""));
|
||||
if (settings.initialSys.size()<4) {
|
||||
|
@ -2034,6 +2041,7 @@ void FurnaceGUI::commitSettings() {
|
|||
e->setConf("initialSys",e->encodeSysDesc(settings.initialSys));
|
||||
e->setConf("horizontalDataView",settings.horizontalDataView);
|
||||
e->setConf("noMultiSystem",settings.noMultiSystem);
|
||||
e->setConf("oldMacroVSlider",settings.oldMacroVSlider);
|
||||
|
||||
// colors
|
||||
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
||||
|
|
Loading…
Reference in New Issue