aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/wage/gui.cpp5
-rw-r--r--engines/wage/gui.h1
-rw-r--r--engines/wage/menu.cpp17
-rw-r--r--engines/wage/menu.h1
-rw-r--r--engines/wage/wage.cpp6
5 files changed, 28 insertions, 2 deletions
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index ad212f2166..6285c487b2 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -588,6 +588,11 @@ void Gui::regenWeaponsMenu() {
_menu->regenWeaponsMenu();
}
+void Gui::processMenuShortCut(byte flags, uint16 ascii) {
+ _menu->processMenuShortCut(flags, ascii);
+}
+
+
void Gui::mouseMove(int x, int y) {
if (_menu->_menuActivated) {
if (_menu->mouseMove(x, y))
diff --git a/engines/wage/gui.h b/engines/wage/gui.h
index 5f15067063..b5f84e0c80 100644
--- a/engines/wage/gui.h
+++ b/engines/wage/gui.h
@@ -100,6 +100,7 @@ public:
const Graphics::Font *getFont(const char *name, Graphics::FontManager::FontUsage fallback);
void regenCommandsMenu();
void regenWeaponsMenu();
+ void processMenuShortCut(byte flags, uint16 ascii);
private:
void paintBorder(Graphics::Surface *g, Common::Rect &r, WindowType windowType);
diff --git a/engines/wage/menu.cpp b/engines/wage/menu.cpp
index a0d5dcd46b..5fc51bcf8f 100644
--- a/engines/wage/menu.cpp
+++ b/engines/wage/menu.cpp
@@ -46,6 +46,7 @@
*/
#include "common/system.h"
+#include "common/keyboard.h"
#include "wage/wage.h"
#include "wage/entities.h"
@@ -550,4 +551,20 @@ void Menu::executeCommand(MenuSubItem *subitem) {
}
}
+void Menu::processMenuShortCut(byte flags, uint16 ascii) {
+ if (flags & (Common::KBD_CTRL | Common::KBD_META)) {
+ for (int i = 0; i < _items.size(); i++)
+ for (int j = 0; j < _items[i]->subitems.size(); j++)
+ if (_items[i]->subitems[j]->shortcut == ascii) {
+ if (_items[i]->subitems[j]->action == kMenuActionCommand)
+ _gui->_engine->processTurn(&_items[i]->subitems[j]->text, NULL);
+ else
+ warning("STUB: Unhandled shortcut");
+
+ break;
+ }
+ }
+}
+
+
} // End of namespace Wage
diff --git a/engines/wage/menu.h b/engines/wage/menu.h
index 82c0106a7b..d817cf3734 100644
--- a/engines/wage/menu.h
+++ b/engines/wage/menu.h
@@ -75,6 +75,7 @@ public:
void regenCommandsMenu();
void regenWeaponsMenu();
+ void processMenuShortCut(byte flags, uint16 ascii);
bool _menuActivated;
Common::Rect _bbox;
diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index b4819cba9d..3d3fc6a293 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -176,8 +176,10 @@ void WageEngine::processEvents() {
break;
default:
- if (event.kbd.flags & Common::KBD_ALT || event.kbd.flags & Common::KBD_CTRL) {
- warning("STUB: Shortcuts");
+ if (event.kbd.flags & (Common::KBD_ALT | Common::KBD_CTRL | Common::KBD_META)) {
+ if (event.kbd.ascii >= 0x20 && event.kbd.ascii <= 0x7f) {
+ _gui->processMenuShortCut(event.kbd.flags, event.kbd.ascii);
+ }
break;
}