Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void set_members_active(std::function<bool(const T&)> predicate)
- {
- bool do_reselect = true;
- for(auto& member : members_) {
- const bool res = predicate(member.first);
- selectable_item& w = *member.second;
- dynamic_cast<styled_widget&>(w).set_active(res);
- if(w.get_value_bool()) {
- do_reselect = false;
- }
- // Only select another member if this was selected
- if(res || !w.get_value_bool()) {
- continue;
- }
- w.set_value_bool(false);
- do_reselect = true;
- }
- if(!do_reselect) {
- return;
- }
- // Look for the first active member to select
- for(auto& member : member_order_) {
- if(dynamic_cast<styled_widget&>(*member).get_active()) {
- member->set_value_bool(true);
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement