290{
291 const glm::vec2 ndc =
to_ndc(px, py);
292 const auto hit =
m_layer->hit_test(ndc);
293
294 const int btn_idx = static_cast<int>(btn);
295
299 if (it !=
m_callbacks.end() && it->second.focus_lost)
301 }
302
304
305 if (hit) {
307 if (it !=
m_callbacks.end() && it->second.focus_gained)
308 it->second.focus_gained(*hit);
309 }
310 }
311
314 }
315
316 if (hit) {
318 if (it !=
m_callbacks.end() && it->second.press.count(btn_idx))
319 it->second.press[btn_idx](*hit, ndc);
320 }
321}
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