Browse Source

Make createIndexSubmenuItem() implementation simpler by calling createCheckMenuItem().

tags/v2.6.0
Andrew Belt 10 months ago
parent
commit
01685a6e1d
1 changed files with 5 additions and 24 deletions
  1. +5
    -24
      include/helpers.hpp

+ 5
- 24
include/helpers.hpp View File

@@ -367,24 +367,6 @@ Example:
*/
template <class TMenuItem = ui::MenuItem>
TMenuItem* createIndexSubmenuItem(std::string text, std::vector<std::string> labels, std::function<size_t()> getter, std::function<void(size_t val)> setter, bool disabled = false, bool alwaysConsume = false) {
struct IndexItem : ui::MenuItem {
std::function<size_t()> getter;
std::function<void(size_t)> setter;
size_t index;
bool alwaysConsume;

void step() override {
size_t currIndex = getter();
this->rightText = CHECKMARK(currIndex == index);
MenuItem::step();
}
void onAction(const event::Action& e) override {
setter(index);
if (alwaysConsume)
e.consume(this);
}
};

struct Item : TMenuItem {
std::function<size_t()> getter;
std::function<void(size_t)> setter;
@@ -400,12 +382,11 @@ TMenuItem* createIndexSubmenuItem(std::string text, std::vector<std::string> lab
ui::Menu* createChildMenu() override {
ui::Menu* menu = new ui::Menu;
for (size_t i = 0; i < labels.size(); i++) {
IndexItem* item = createMenuItem<IndexItem>(labels[i]);
item->getter = getter;
item->setter = setter;
item->index = i;
item->alwaysConsume = alwaysConsume;
menu->addChild(item);
menu->addChild(createCheckMenuItem(labels[i], "", [=]() {
return getter() == i;
}, [=]() {
setter(i);
}, false, alwaysConsume));
}
return menu;
}


Loading…
Cancel
Save