Fixes
This commit is contained in:
@ -52,10 +52,71 @@ namespace ia::iae
|
||||
{
|
||||
}
|
||||
|
||||
VOID ProcessEvent(IN Rml::Event &event)
|
||||
VOID AddClickListener(IN Rml::Element *element, IN std::function<VOID()> callback)
|
||||
{
|
||||
element->AddEventListener("click", this);
|
||||
m_clickCallbacks[element->GetId().c_str()] = callback;
|
||||
}
|
||||
|
||||
// VOID AddHoverEnterListener(IN PCCHAR elementId, IN std::function<VOID()> callback)
|
||||
//{
|
||||
// m_document->GetElementById(elementId)->AddEventListener("mouseover", this);
|
||||
// m_hoverEnterCallbacks[elementId] = callback;
|
||||
// }
|
||||
//
|
||||
// VOID AddHoverExitListener(IN PCCHAR elementId, IN std::function<VOID()> callback)
|
||||
//{
|
||||
// m_document->GetElementById(elementId)->AddEventListener("mouseout", this);
|
||||
// m_hoverExitCallbacks[elementId] = callback;
|
||||
//}
|
||||
//
|
||||
// VOID AddPointerDownListener(IN PCCHAR elementId, IN std::function<VOID()> callback)
|
||||
//{
|
||||
// m_document->GetElementById(elementId)->AddEventListener("mousedown", this);
|
||||
// m_pointerDownCallbacks[elementId] = callback;
|
||||
//}
|
||||
//
|
||||
// VOID AddPointerUpListener(IN PCCHAR elementId, IN std::function<VOID()> callback)
|
||||
//{
|
||||
// m_document->GetElementById(elementId)->AddEventListener("mouseup", this);
|
||||
// m_pointerUpCallbacks[elementId] = callback;
|
||||
//}
|
||||
|
||||
VOID ProcessEvent(IN Rml::Event &event)
|
||||
{
|
||||
switch (event.GetId())
|
||||
{
|
||||
case Rml::EventId::Click:
|
||||
m_clickCallbacks[event.GetTargetElement()->GetId().c_str()]();
|
||||
break;
|
||||
|
||||
case Rml::EventId::Mouseover:
|
||||
m_hoverEnterCallbacks[event.GetTargetElement()->GetId().c_str()]();
|
||||
break;
|
||||
|
||||
case Rml::EventId::Mouseout:
|
||||
m_hoverExitCallbacks[event.GetTargetElement()->GetId().c_str()]();
|
||||
break;
|
||||
|
||||
case Rml::EventId::Mousedown:
|
||||
m_pointerDownCallbacks[event.GetTargetElement()->GetId().c_str()]();
|
||||
break;
|
||||
|
||||
case Rml::EventId::Mouseup:
|
||||
m_pointerUpCallbacks[event.GetTargetElement()->GetId().c_str()]();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
Map<String, std::function<VOID()>> m_clickCallbacks;
|
||||
Map<String, std::function<VOID()>> m_hoverEnterCallbacks;
|
||||
Map<String, std::function<VOID()>> m_hoverExitCallbacks;
|
||||
Map<String, std::function<VOID()>> m_pointerDownCallbacks;
|
||||
Map<String, std::function<VOID()>> m_pointerUpCallbacks;
|
||||
} g_eventListener{};
|
||||
|
||||
/* Taken from https://github.com/mikke89/RmlUi/blob/master/Backends/RmlUi_Platform_SDL.cpp */
|
||||
@ -396,6 +457,11 @@ namespace ia::iae
|
||||
g_document->SetInnerRML(
|
||||
BuildString("<body style=\"display: block; width: 100%; height: 100%;\">", source, "</body>").c_str());
|
||||
}
|
||||
|
||||
VOID UI::AddClickEvent(IN PCCHAR elementId, IN std::function<VOID()> callback)
|
||||
{
|
||||
g_eventListener.AddClickListener(g_document->GetElementById(elementId), callback);
|
||||
}
|
||||
} // namespace ia::iae
|
||||
|
||||
namespace ia::iae
|
||||
|
||||
Reference in New Issue
Block a user