| 85 | } |
| 86 | |
| 87 | void Toggle::process_event(const Event &e) { |
| 88 | switch (e.type) { |
| 89 | case EventType::Click: |
| 90 | if (is_enabled()) { |
| 91 | set_checked_internal(!checked, true, false, true); |
| 92 | } |
| 93 | |
| 94 | break; |
| 95 | case EventType::Hover: { |
| 96 | bool hover_active = std::get<EventHover>(e.variant).active && is_enabled(); |
| 97 | set_style_enabled(hover_state, hover_active); |
| 98 | floater->set_style_enabled(hover_state, hover_active); |
| 99 | break; |
| 100 | } |
| 101 | case EventType::Focus: { |
| 102 | bool focus_active = std::get<EventFocus>(e.variant).active; |
| 103 | set_style_enabled(focus_state, focus_active); |
| 104 | break; |
| 105 | } |
| 106 | case EventType::Enable: { |
| 107 | bool enable_active = std::get<EventEnable>(e.variant).active; |
| 108 | set_style_enabled(disabled_state, !enable_active); |
| 109 | floater->set_style_enabled(disabled_state, !enable_active); |
| 110 | if (enable_active) { |
| 111 | set_cursor(Cursor::Pointer); |
| 112 | set_focusable(true); |
| 113 | } |
| 114 | else { |
| 115 | set_cursor(Cursor::None); |
| 116 | set_focusable(false); |
| 117 | } |
| 118 | break; |
| 119 | } |
| 120 | case EventType::Update: { |
| 121 | std::chrono::high_resolution_clock::duration now = ultramodern::time_since_start(); |
| 122 | float delta_time = std::max(std::chrono::duration<float>(now - last_time).count(), 0.0f); |
| 123 | last_time = now; |
| 124 | |
| 125 | constexpr float dp_speed = 740.0f; |
| 126 | const float target = floater_left_target(); |
| 127 | if (target < floater_left) { |
| 128 | floater_left += std::max(-dp_speed * delta_time, target - floater_left); |
| 129 | } |
| 130 | else { |
| 131 | floater_left += std::min(dp_speed * delta_time, target - floater_left); |
| 132 | } |
| 133 | |
| 134 | if (abs(target - floater_left) < 1e-4f) { |
| 135 | floater_left = target; |
| 136 | } |
| 137 | else { |
| 138 | queue_update(); |
| 139 | } |
| 140 | |
| 141 | floater->set_left(floater_left, Unit::Dp); |
| 142 | |
| 143 | break; |
| 144 | } |
nothing calls this directly
no test coverage detected