Browse Source

EventPhase as enum class

Michael Ragazzon 6 years ago
parent
commit
3c5c22b5e8

+ 3 - 2
Include/Rocket/Core/Event.h

@@ -38,6 +38,9 @@ namespace Core {
 class Element;
 class EventInstancer;
 
+enum class EventPhase { None, Capture = 1, Target = 2, Bubble = 4 };
+enum class DefaultActionPhase { None, Target = (int)EventPhase::Target, Bubble = (int)EventPhase::Bubble, TargetAndBubble = ((int)Target | (int)Bubble) };
+
 /**
 	An event that propogates through the element hierarchy. Events follow the DOM3 event specification. See
 	http://www.w3.org/TR/DOM-Level-3-Events/events.html.
@@ -59,7 +62,6 @@ public:
 	/// Destructor
 	virtual ~Event();
 
-	enum EventPhase { PHASE_NONE, PHASE_CAPTURE = 1, PHASE_TARGET = 2, PHASE_BUBBLE = 4 };
 
 	/// Get the current propagation phase.
 	/// @return Current phase the event is in.
@@ -133,7 +135,6 @@ private:
 	friend class Factory;
 };
 
-enum class DefaultActionPhase { None, Target = Event::PHASE_TARGET, Bubble = Event::PHASE_BUBBLE, TargetAndBubble = (Target | Bubble) };
 
 }
 }

+ 1 - 1
Source/Core/ElementDocument.cpp

@@ -410,7 +410,7 @@ void ElementDocument::ProcessDefaultAction(Event& event)
 	Element::ProcessDefaultAction(event);
 
 	// Process generic keyboard events for this window in bubble phase
-	if (event.GetPhase() == Event::PHASE_BUBBLE && event == KEYDOWN)
+	if (event.GetPhase() == EventPhase::Bubble && event == KEYDOWN)
 	{
 		int key_identifier = event.GetParameter<int>("key_identifier", Input::KI_UNKNOWN);
 

+ 3 - 3
Source/Core/Event.cpp

@@ -34,7 +34,7 @@ namespace Core {
 
 Event::Event()
 {
-	phase = PHASE_NONE;
+	phase = EventPhase::None;
 	interruped = false;
 	interruptible = false;
 	current_element = NULL;
@@ -43,7 +43,7 @@ Event::Event()
 
 Event::Event(Element* _target_element, const String& _type, const Dictionary& _parameters, bool _interruptible) : type(_type), parameters(_parameters), target_element(_target_element), parameters_backup(_parameters), interruptible(_interruptible)
 {
-	phase = PHASE_NONE;
+	phase = EventPhase::None;
 	interruped = false;
 	current_element = NULL;
 }
@@ -83,7 +83,7 @@ void Event::SetPhase(EventPhase _phase)
 	phase = _phase;
 }
 
-Event::EventPhase Event::GetPhase() const
+EventPhase Event::GetPhase() const
 {
 	return phase;
 }

+ 7 - 7
Source/Core/EventDispatcher.cpp

@@ -129,7 +129,7 @@ bool EventDispatcher::DispatchEvent(Element* target_element, const String& name,
 		walk_element = walk_element->GetParentNode();
 	}
 
-	event->SetPhase(Event::PHASE_CAPTURE);
+	event->SetPhase(EventPhase::Capture);
 	// Capture phase - root, to target (only events that have registered as capture events)
 	// Note: We walk elements in REVERSE as they're placed in the list from the elements parent to the root
 	for (int i = (int)elements.size() - 1; i >= 0 && event->IsPropagating(); i--) 
@@ -142,14 +142,14 @@ bool EventDispatcher::DispatchEvent(Element* target_element, const String& name,
 	// Target phase - direct at the target
 	if (event->IsPropagating()) 
 	{
-		event->SetPhase(Event::PHASE_TARGET);
+		event->SetPhase(EventPhase::Target);
 		event->SetCurrentElement(target_element);
 		TriggerEvents(event, default_action_phase);
 	}
 
 	if (bubbles && event->IsPropagating())
 	{
-		event->SetPhase(Event::PHASE_BUBBLE);
+		event->SetPhase(EventPhase::Bubble);
 		// Bubble phase - target to root (normal event bindings)
 		for (size_t i = 0; i < elements.size() && event->IsPropagating(); i++) 
 		{
@@ -180,7 +180,7 @@ String EventDispatcher::ToString() const
 
 void EventDispatcher::TriggerEvents(Event* event, DefaultActionPhase default_action_phase)
 {
-	const Event::EventPhase phase = event->GetPhase();
+	const EventPhase phase = event->GetPhase();
 	const bool do_default_action = ((int)phase & (int)default_action_phase);
 
 	// Look up the event
@@ -192,9 +192,9 @@ void EventDispatcher::TriggerEvents(Event* event, DefaultActionPhase default_act
 		Listeners& listeners = (*itr).second;
 		for (size_t i = 0; i < listeners.size() && event->IsPropagating(); i++)
 		{
-			if (phase == Event::PHASE_TARGET 
-				|| (phase == Event::PHASE_CAPTURE && listeners[i].in_capture_phase) 
-				|| (phase == Event::PHASE_BUBBLE && !listeners[i].in_capture_phase))
+			if (phase == EventPhase::Target 
+				|| (phase == EventPhase::Capture && listeners[i].in_capture_phase) 
+				|| (phase == EventPhase::Bubble && !listeners[i].in_capture_phase))
 			{
 				listeners[i].listener->ProcessEvent(*event);
 			}