fix(color): empty groups in switch and source select popup (#4651)

This commit is contained in:
philmoz
2024-02-26 10:28:42 +10:00
committed by GitHub
parent 7183490d75
commit 88c26fb2df
+16 -17
View File
@@ -109,7 +109,8 @@ rect_t MenuToolbar::getButtonRect(bool wideButton)
}
bool MenuToolbar::filterMenu(MenuToolbarButton* btn, int16_t filtermin,
int16_t filtermax, const Choice::FilterFct& filterFunc,
int16_t filtermax,
const Choice::FilterFct& filterFunc,
const char* title)
{
btn->check(!btn->checked());
@@ -133,20 +134,9 @@ bool MenuToolbar::filterMenu(MenuToolbarButton* btn, int16_t filtermin,
return btn->checked();
}
typedef std::function<bool(int)> IsValueAvailable;
static bool checkFirstAvailable(int min, int max,
IsValueAvailable isValueAvailable)
{
for (int i = min; i <= max; i++) {
if (isValueAvailable(i)) {
return true;
}
}
return false;
}
void MenuToolbar::addButton(const char* picto, int16_t filtermin,
int16_t filtermax, const Choice::FilterFct& filterFunc,
int16_t filtermax,
const Choice::FilterFct& filterFunc,
const char* title, bool wideButton)
{
int vmin = choice->vmin;
@@ -154,9 +144,18 @@ void MenuToolbar::addButton(const char* picto, int16_t filtermin,
if (vmin > filtermin || vmax < filtermin) return;
if (choice->isValueAvailable &&
!checkFirstAvailable(filtermin, filtermax, choice->isValueAvailable))
return;
if (choice->isValueAvailable) {
bool found = false;
for (int i = filtermin; i <= filtermax; i += 1) {
if (choice->isValueAvailable(i)) {
if (filterFunc && !filterFunc(i))
continue;
found = true;
break;
}
}
if (!found) return;
}
rect_t r = getButtonRect(wideButton);
auto button = new MenuToolbarButton(this, r, picto);