| 72 | } |
| 73 | |
| 74 | void Button::process_event(const Event &e) { |
| 75 | switch (e.type) { |
| 76 | case EventType::Click: |
| 77 | if (is_enabled()) { |
| 78 | for (const auto &function : pressed_callbacks) { |
| 79 | function(); |
| 80 | } |
| 81 | } |
| 82 | break; |
| 83 | case EventType::Hover: |
| 84 | set_style_enabled(hover_state, std::get<EventHover>(e.variant).active && is_enabled()); |
| 85 | break; |
| 86 | case EventType::Enable: |
| 87 | { |
| 88 | bool enable_active = std::get<EventEnable>(e.variant).active; |
| 89 | set_style_enabled(disabled_state, !enable_active); |
| 90 | if (enable_active) { |
| 91 | set_cursor(Cursor::Pointer); |
| 92 | set_focusable(true); |
| 93 | } |
| 94 | else { |
| 95 | set_cursor(Cursor::None); |
| 96 | set_focusable(false); |
| 97 | } |
| 98 | } |
| 99 | break; |
| 100 | case EventType::Focus: |
| 101 | set_style_enabled(focus_state, std::get<EventFocus>(e.variant).active); |
| 102 | break; |
| 103 | case EventType::Update: |
| 104 | break; |
| 105 | default: |
| 106 | assert(false && "Unknown event type."); |
| 107 | break; |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | void Button::add_pressed_callback(std::function<void()> callback) { |
| 112 | pressed_callbacks.emplace_back(callback); |
nothing calls this directly
no outgoing calls
no test coverage detected