Advertisement
Vultraz

Untitled

Nov 18th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1.     void set_members_active(std::function<bool(const T&)> predicate)
  2.     {
  3.         bool do_reselect = true;
  4.  
  5.         for(auto& member : members_) {
  6.             const bool res = predicate(member.first);
  7.  
  8.             selectable_item& w = *member.second;
  9.             dynamic_cast<styled_widget&>(w).set_active(res);
  10.  
  11.             if(w.get_value_bool()) {
  12.                 do_reselect = false;
  13.             }
  14.  
  15.             // Only select another member if this was selected
  16.             if(res || !w.get_value_bool()) {
  17.                 continue;
  18.             }
  19.  
  20.             w.set_value_bool(false);
  21.             do_reselect = true;
  22.         }
  23.  
  24.         if(!do_reselect) {
  25.             return;
  26.         }
  27.  
  28.         // Look for the first active member to select
  29.         for(auto& member : member_order_) {
  30.             if(dynamic_cast<styled_widget&>(*member).get_active()) {
  31.                 member->set_value_bool(true);
  32.                 break;
  33.             }
  34.         }
  35.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement