304{
305 const glm::vec2 ndc =
to_ndc(px, py);
306 const auto hit =
m_layer->hit_test(ndc);
307
308 const int btn_idx = static_cast<int>(btn);
309
313 if (it !=
m_callbacks.end() && it->second.focus_lost)
315 }
316
318
319 if (hit) {
321 if (it !=
m_callbacks.end() && it->second.focus_gained)
322 it->second.focus_gained(*hit);
323 }
324 }
325
328 }
329
330 if (hit) {
332 if (it !=
m_callbacks.end() && it->second.press.count(btn_idx))
333 it->second.press[btn_idx](*hit, ndc);
334 }
335}
std::optional< uint32_t > m_dragging[3]
std::shared_ptr< Layer > m_layer
glm::vec2 to_ndc(double px, double py) const noexcept
std::unordered_map< uint32_t, ElementCallbacks > m_callbacks
std::optional< uint32_t > m_focused