MCPcopy Create free account
hub / github.com/RevoSucks/BM64Recomp / process_event

Method process_event

src/ui/elements/ui_toggle.cpp:87–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 }

Callers

nothing calls this directly

Calls 2

set_style_enabledMethod · 0.80
set_leftMethod · 0.80

Tested by

no test coverage detected