Sirikata
|
Tracks input events to ensure coherent streams of events when dispatching a single stream of input events to multiple consumers. More...
#include <InputEventCompletion.hpp>
Public Member Functions | |
InputEventCompletion () | |
void | onKeyPressedEvent (ButtonPressedPtr ev) |
void | onKeyRepeatedEvent (ButtonRepeatedPtr ev) |
void | onKeyReleasedEvent (ButtonReleasedPtr ev) |
void | onMousePressedEvent (MousePressedEventPtr ev) |
void | onMouseDragEvent (MouseDragEventPtr ev) |
void | onMouseReleasedEvent (MouseReleasedEventPtr ev) |
void | updateTarget (InputListener *target) |
Update the target listener that events are being handled by. | |
Private Attributes | |
InputListener * | mTarget |
std::map< KeyButton, ButtonEventPtr > | mKeyEvents |
std::map< MouseButton, MouseDownEventPtr > | mMouseEvents |
Tracks input events to ensure coherent streams of events when dispatching a single stream of input events to multiple consumers.
For example, if you press a key down, then click a mouse such that the input focus changes, this allows you to generate a fake key up event when the focus changes so the element that originally had focus isn't left without a key up event.
Sirikata::Input::InputEventCompletion::InputEventCompletion | ( | ) |
void Sirikata::Input::InputEventCompletion::onKeyPressedEvent | ( | ButtonPressedPtr | ev | ) |
References mKeyEvents.
void Sirikata::Input::InputEventCompletion::onKeyReleasedEvent | ( | ButtonReleasedPtr | ev | ) |
References mKeyEvents.
void Sirikata::Input::InputEventCompletion::onKeyRepeatedEvent | ( | ButtonRepeatedPtr | ev | ) |
References mKeyEvents.
void Sirikata::Input::InputEventCompletion::onMouseDragEvent | ( | MouseDragEventPtr | ev | ) |
References mMouseEvents.
void Sirikata::Input::InputEventCompletion::onMousePressedEvent | ( | MousePressedEventPtr | ev | ) |
References mMouseEvents.
void Sirikata::Input::InputEventCompletion::onMouseReleasedEvent | ( | MouseReleasedEventPtr | ev | ) |
References mMouseEvents.
void Sirikata::Input::InputEventCompletion::updateTarget | ( | InputListener * | target | ) |
Update the target listener that events are being handled by.
Any outstanding logical events will have completion events generate and delivered to the old listener, e.g. a key up and a mouse up if we still had a key and mouse button pressed.
References mKeyEvents, mMouseEvents, mTarget, Sirikata::Input::InputListener::onKeyReleasedEvent(), and Sirikata::Input::InputListener::onMouseReleasedEvent().
std::map<KeyButton, ButtonEventPtr> Sirikata::Input::InputEventCompletion::mKeyEvents [private] |
Referenced by onKeyPressedEvent(), onKeyReleasedEvent(), onKeyRepeatedEvent(), and updateTarget().
std::map<MouseButton, MouseDownEventPtr> Sirikata::Input::InputEventCompletion::mMouseEvents [private] |
Referenced by onMouseDragEvent(), onMousePressedEvent(), onMouseReleasedEvent(), and updateTarget().
Referenced by updateTarget().