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

Method ProcessEvent

src/ui/elements/ui_element.cpp:173–275  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

171}
172
173void Element::ProcessEvent(Rml::Event &event) {
174 ContextId prev_context = recompui::try_close_current_context();
175 ContextId context = ContextId::null();
176 Rml::ElementDocument* doc = event.GetTargetElement()->GetOwnerDocument();
177 if (doc != nullptr) {
178 context = get_context_from_document(doc);
179 }
180
181 bool did_open = false;
182
183 // TODO disallow null contexts once the entire UI system has been migrated.
184 if (context != ContextId::null()) {
185 did_open = context.open_if_not_already();
186 }
187
188 // Events that are processed during any phase.
189 switch (event.GetId()) {
190 case Rml::EventId::Click:
191 handle_event(Event::click_event(event.GetParameter("mouse_x", 0.0f), event.GetParameter("mouse_y", 0.0f)));
192 break;
193 case Rml::EventId::Mousedown:
194 {
195 MouseButton mouse_button = convert_rml_mouse_button(event.GetParameter("button", 3));
196 if (mouse_button != MouseButton::Count) {
197 handle_event(Event::mousebutton_event(event.GetParameter("mouse_x", 0.0f), event.GetParameter("mouse_y", 0.0f), mouse_button, true));
198 }
199 }
200 break;
201 case Rml::EventId::Mouseup:
202 {
203 MouseButton mouse_button = convert_rml_mouse_button(event.GetParameter("button", 3));
204 if (mouse_button != MouseButton::Count) {
205 handle_event(Event::mousebutton_event(event.GetParameter("mouse_x", 0.0f), event.GetParameter("mouse_y", 0.0f), mouse_button, false));
206 }
207 }
208 break;
209 case Rml::EventId::Keydown:
210 switch ((Rml::Input::KeyIdentifier)event.GetParameter<int>("key_identifier", 0)) {
211 case Rml::Input::KeyIdentifier::KI_LEFT:
212 handle_event(Event::navigate_event(NavDirection::Left));
213 break;
214 case Rml::Input::KeyIdentifier::KI_UP:
215 handle_event(Event::navigate_event(NavDirection::Up));
216 break;
217 case Rml::Input::KeyIdentifier::KI_RIGHT:
218 handle_event(Event::navigate_event(NavDirection::Right));
219 break;
220 case Rml::Input::KeyIdentifier::KI_DOWN:
221 handle_event(Event::navigate_event(NavDirection::Down));
222 break;
223 }
224 break;
225 case Rml::EventId::Drag:
226 handle_event(Event::drag_event(event.GetParameter("mouse_x", 0.0f), event.GetParameter("mouse_y", 0.0f), DragPhase::Move));
227 break;
228 default:
229 break;
230 }

Callers

nothing calls this directly

Calls 5

convert_rml_mouse_buttonFunction · 0.85
EventsFunction · 0.85
open_if_not_alreadyMethod · 0.80
closeMethod · 0.80
openMethod · 0.80

Tested by

no test coverage detected