Explorar o código

Pass the element that the event listener is being instanced for to the EventListenerInstancer

Robert Norris %!s(int64=14) %!d(string=hai) anos
pai
achega
111da76531

+ 3 - 1
Include/Rocket/Core/EventListenerInstancer.h

@@ -31,6 +31,7 @@
 #include <Rocket/Core/ReferenceCountable.h>
 #include <Rocket/Core/String.h>
 #include <Rocket/Core/Header.h>
+#include <Rocket/Core/Element.h>
 
 namespace Rocket {
 namespace Core {
@@ -51,7 +52,8 @@ public:
 
 	/// Instance an event listener object.
 	/// @param value Value of the event.
-	virtual EventListener* InstanceEventListener(const String& value) = 0;
+	/// @param element Element that triggers the events.
+	virtual EventListener* InstanceEventListener(const String& value, Element* element) = 0;
 
 	/// Releases this event listener instancer.
 	virtual void Release() = 0;

+ 1 - 1
Include/Rocket/Core/Factory.h

@@ -166,7 +166,7 @@ public:
 	/// RML.
 	/// @param[in] value The parameters to the event listener.
 	/// @return The instanced event listener.
-	static EventListener* InstanceEventListener(const String& value);
+	static EventListener* InstanceEventListener(const String& value, Element* element);
 
 private:
 	Factory();

+ 1 - 1
Source/Core/ElementUtilities.cpp

@@ -158,7 +158,7 @@ void ElementUtilities::BindEventAttributes(Element* element)
 	{
 		if (name.Substring(0, 2) == "on")
 		{
-			EventListener* listener = Factory::InstanceEventListener(value);
+			EventListener* listener = Factory::InstanceEventListener(value, element);
 			if (listener)
 				element->AddEventListener(&name[2], listener, false);
 		}

+ 2 - 2
Source/Core/Factory.cpp

@@ -565,11 +565,11 @@ EventListenerInstancer* Factory::RegisterEventListenerInstancer(EventListenerIns
 }
 
 // Instance an event listener with the given string
-EventListener* Factory::InstanceEventListener(const String& value)
+EventListener* Factory::InstanceEventListener(const String& value, Element* element)
 {
 	// If we have an event listener instancer, use it
 	if (event_listener_instancer)
-		return event_listener_instancer->InstanceEventListener(value);
+		return event_listener_instancer->InstanceEventListener(value, element);
 
 	return NULL;
 }