aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorTarek Soliman2012-02-22 18:30:47 -0600
committerTarek Soliman2012-03-02 20:48:50 -0600
commitd12f21b31db2985faeb2e2a6b9b09cd210f82c34 (patch)
tree7340a06802eded01eb68c224a3e958bb37185a31 /gui
parent4ee1a3aceae7d68c89513f7d122606acbceb1e7c (diff)
downloadscummvm-rg350-d12f21b31db2985faeb2e2a6b9b09cd210f82c34.tar.gz
scummvm-rg350-d12f21b31db2985faeb2e2a6b9b09cd210f82c34.tar.bz2
scummvm-rg350-d12f21b31db2985faeb2e2a6b9b09cd210f82c34.zip
KEYMAPPER: Map non-key custom input events
This also makes the keymapper be in charge of keymapping logic
Diffstat (limited to 'gui')
-rw-r--r--gui/dialog.cpp7
-rw-r--r--gui/dialog.h9
-rw-r--r--gui/gui-manager.cpp3
3 files changed, 19 insertions, 0 deletions
diff --git a/gui/dialog.cpp b/gui/dialog.cpp
index fd15ba5e09..2201e83ca5 100644
--- a/gui/dialog.cpp
+++ b/gui/dialog.cpp
@@ -21,6 +21,10 @@
#include "common/rect.h"
+#ifdef ENABLE_KEYMAPPER
+#include "common/events.h"
+#endif
+
#include "gui/gui-manager.h"
#include "gui/dialog.h"
#include "gui/widget.h"
@@ -314,6 +318,9 @@ void Dialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
}
}
+#ifdef ENABLE_KEYMAPPER
+void Dialog::handleOtherEvent(Common::Event evt) { }
+#endif
/*
* Determine the widget at location (x,y) if any. Assumes the coordinates are
* in the local coordinate system, i.e. relative to the top left of the dialog.
diff --git a/gui/dialog.h b/gui/dialog.h
index a324450996..f5a5f94a68 100644
--- a/gui/dialog.h
+++ b/gui/dialog.h
@@ -29,6 +29,12 @@
#include "gui/object.h"
#include "gui/ThemeEngine.h"
+#ifdef ENABLE_KEYMAPPER
+namespace Common {
+struct Event;
+}
+#endif
+
namespace GUI {
class Widget;
@@ -82,6 +88,9 @@ protected:
virtual void handleKeyUp(Common::KeyState state);
virtual void handleMouseMoved(int x, int y, int button);
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
+#ifdef ENABLE_KEYMAPPER
+ virtual void handleOtherEvent(Common::Event evt);
+#endif
Widget *findWidget(int x, int y); // Find the widget at pos x,y if any
Widget *findWidget(const char *name);
diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp
index 4fa60bfe07..ffecd928bc 100644
--- a/gui/gui-manager.cpp
+++ b/gui/gui-manager.cpp
@@ -366,6 +366,9 @@ void GuiManager::runLoop() {
screenChange();
break;
default:
+#ifdef ENABLE_KEYMAPPER
+ activeDialog->handleOtherEvent(event);
+#endif
break;
}