From b4a1bceeacd0e29f04ceccb01c836dc8cd315951 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 25 Jul 2009 00:59:30 +0000 Subject: Add function "allowMapping" to EventSource, for testing whether the event source allows mapping (via the Keymapper for example.) svn-id: r42720 --- common/events.cpp | 6 +++++- common/events.h | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/common/events.cpp b/common/events.cpp index 9cb5d8aba6..149b4936a9 100644 --- a/common/events.cpp +++ b/common/events.cpp @@ -51,8 +51,12 @@ void EventDispatcher::dispatch() { Common::Event event; for (Common::List::iterator i = _sources.begin(); i != _sources.end(); ++i) { + const bool allowMapping = i->source->allowMapping(); + while (i->source->pollEvent(event)) { - if (_mapper) { + // We only try to process the events via the setup event mapper, when + // we have a setup mapper and when the event source allows mapping. + if (_mapper && allowMapping) { if (_mapper->notifyEvent(event)) { // We allow the event mapper to create multiple events, when // eating an event. diff --git a/common/events.h b/common/events.h index 684b87bc5f..e38b1f4ca2 100644 --- a/common/events.h +++ b/common/events.h @@ -146,6 +146,16 @@ public: * @return true if an event was polled, false otherwise. */ virtual bool pollEvent(Event &event) = 0; + + /** + * Checks whether events from this source are allowed to be mapped. + * + * Possible event sources not allowing mapping are: the event recorder/player and/or + * the EventManager, which allows user events to be pushed. + * + * By default we allow mapping for every event source. + */ + virtual bool allowMapping() const { return true; } }; /** -- cgit v1.2.3