aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2009-07-25 00:59:30 +0000
committerJohannes Schickel2009-07-25 00:59:30 +0000
commitb4a1bceeacd0e29f04ceccb01c836dc8cd315951 (patch)
tree63dd543840873d32fb0ae1acbc096ab2bfc52d86
parent7905bbbc5b845854654d75a69876af87f78cdda0 (diff)
downloadscummvm-rg350-b4a1bceeacd0e29f04ceccb01c836dc8cd315951.tar.gz
scummvm-rg350-b4a1bceeacd0e29f04ceccb01c836dc8cd315951.tar.bz2
scummvm-rg350-b4a1bceeacd0e29f04ceccb01c836dc8cd315951.zip
Add function "allowMapping" to EventSource, for testing whether the event source allows mapping (via the Keymapper for example.)
svn-id: r42720
-rw-r--r--common/events.cpp6
-rw-r--r--common/events.h10
2 files changed, 15 insertions, 1 deletions
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<SourceEntry>::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; }
};
/**