From 46e48e42eaf0b517f0e69673f0cde1a603a3fa93 Mon Sep 17 00:00:00 2001 From: freq-mod Date: Sat, 24 Aug 2024 11:24:58 +0200 Subject: [PATCH] backport default sys picker from B --- src/gui/gui.cpp | 4 ++-- src/gui/gui.h | 2 +- src/gui/settings.cpp | 20 ++++++++++++-------- src/gui/sysManager.cpp | 4 ++-- src/gui/sysPicker.cpp | 4 ++-- src/gui/userPresets.cpp | 4 ++-- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 27b452697..608be1e56 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4488,7 +4488,7 @@ bool FurnaceGUI::loop() { } else { if (ImGui::BeginMenu(_("add chip..."))) { exitDisabledTimer=1; - DivSystem picked=systemPicker(); + DivSystem picked=systemPicker(false); if (picked!=DIV_SYSTEM_NULL) { if (!e->addSystem(picked)) { showError(fmt::sprintf(_("cannot add chip! (%s)"),e->getLastError())); @@ -4519,7 +4519,7 @@ bool FurnaceGUI::loop() { ImGui::Checkbox(_("Preserve channel positions"),&preserveChanPos); for (int i=0; isong.systemLen; i++) { if (ImGui::BeginMenu(fmt::sprintf("%d. %s##_SYSC%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { - DivSystem picked=systemPicker(); + DivSystem picked=systemPicker(false); if (picked!=DIV_SYSTEM_NULL) { if (e->changeSystem(i,picked,preserveChanPos)) { MARK_MODIFIED; diff --git a/src/gui/gui.h b/src/gui/gui.h index 72436f071..31a287ef9 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2929,7 +2929,7 @@ class FurnaceGUI { void doReplace(); void doDrag(); void editOptions(bool topMenu); - DivSystem systemPicker(); + DivSystem systemPicker(bool full_width); void noteInput(int num, int key, int vol=-1); void valueInput(int num, bool direct=false, int target=-1); void orderInput(int num); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 16414eab0..e2efb91e7 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1084,15 +1084,19 @@ void FurnaceGUI::drawSettings() { ImGui::PushID(i); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(_("Invert")).x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); - if (ImGui::BeginCombo("##System",getSystemName(sysID))) { - for (int j=0; availableSystems[j]; j++) { - if (ImGui::Selectable(getSystemName((DivSystem)availableSystems[j]),sysID==availableSystems[j])) { - sysID=(DivSystem)availableSystems[j]; - settings.initialSys.set(fmt::sprintf("id%d",i),(int)e->systemToFileFur(sysID)); - settings.initialSys.set(fmt::sprintf("flags%d",i),""); - settingsChanged=true; - } + if (ImGui::BeginCombo("##System",getSystemName(sysID),ImGuiComboFlags_HeightLargest)) { + + sysID=systemPicker(true); + + if (sysID!=DIV_SYSTEM_NULL) + { + settings.initialSys.set(fmt::sprintf("id%d",i),(int)e->systemToFileFur(sysID)); + settings.initialSys.set(fmt::sprintf("flags%d",i),""); + settingsChanged=true; + + ImGui::CloseCurrentPopup(); } + ImGui::EndCombo(); } diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index b4e08fc36..c118c1d77 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -102,7 +102,7 @@ void FurnaceGUI::drawSysManager() { ImGui::SameLine(); ImGui::Button(_("Change##SysChange")); if (ImGui::BeginPopupContextItem("SysPickerC",ImGuiPopupFlags_MouseButtonLeft)) { - DivSystem picked=systemPicker(); + DivSystem picked=systemPicker(false); if (picked!=DIV_SYSTEM_NULL) { if (e->changeSystem(i,picked,preserveChanPos)) { MARK_MODIFIED; @@ -138,7 +138,7 @@ void FurnaceGUI::drawSysManager() { ImGui::TableNextColumn(); ImGui::Button(ICON_FA_PLUS "##SysAdd"); if (ImGui::BeginPopupContextItem("SysPickerA",ImGuiPopupFlags_MouseButtonLeft)) { - DivSystem picked=systemPicker(); + DivSystem picked=systemPicker(false); if (picked!=DIV_SYSTEM_NULL) { if (!e->addSystem(picked)) { showError(fmt::sprintf(_("cannot add chip! (%s)"),e->getLastError())); diff --git a/src/gui/sysPicker.cpp b/src/gui/sysPicker.cpp index 3eb7f5015..fd0046121 100644 --- a/src/gui/sysPicker.cpp +++ b/src/gui/sysPicker.cpp @@ -23,7 +23,7 @@ #include "guiConst.h" #include -DivSystem FurnaceGUI::systemPicker() { +DivSystem FurnaceGUI::systemPicker(bool full_width) { DivSystem ret=DIV_SYSTEM_NULL; DivSystem hoveredSys=DIV_SYSTEM_NULL; bool reissueSearch=false; @@ -61,7 +61,7 @@ DivSystem FurnaceGUI::systemPicker() { } } } - if (ImGui::BeginTable("SysList",1,ImGuiTableFlags_ScrollY,ImVec2(500.0f*dpiScale,200.0*dpiScale))) { + if (ImGui::BeginTable("SysList",1,ImGuiTableFlags_ScrollY,ImVec2(full_width ? ImGui::GetContentRegionAvail().x : 500.0f*dpiScale,200.0f*dpiScale))) { if (sysSearchQuery.empty()) { // display chip list for (int j=0; curSysSection[j]; j++) { diff --git a/src/gui/userPresets.cpp b/src/gui/userPresets.cpp index 14e6f9d7b..d2999c6cc 100644 --- a/src/gui/userPresets.cpp +++ b/src/gui/userPresets.cpp @@ -392,7 +392,7 @@ void FurnaceGUI::drawUserPresets() { tempID=fmt::sprintf("%s##USystem",getSystemName(chip.sys)); ImGui::Button(tempID.c_str(),ImVec2(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(_("Invert")).x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0,0)); if (ImGui::BeginPopupContextItem("SysPickerCU",ImGuiPopupFlags_MouseButtonLeft)) { - DivSystem picked=systemPicker(); + DivSystem picked=systemPicker(false); if (picked!=DIV_SYSTEM_NULL) { chip.sys=picked; mustBake=true; @@ -456,7 +456,7 @@ void FurnaceGUI::drawUserPresets() { ImGui::Button(ICON_FA_PLUS "##SysAddU"); if (ImGui::BeginPopupContextItem("SysPickerU",ImGuiPopupFlags_MouseButtonLeft)) { - DivSystem picked=systemPicker(); + DivSystem picked=systemPicker(false); if (picked!=DIV_SYSTEM_NULL) { preset->orig.push_back(FurnaceGUISysDefChip(picked,1.0f,0.0f,"")); mustBake=true;