diff options
author | yexo <yexo@openttd.org> | 2010-07-03 21:43:44 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2010-07-03 21:43:44 +0000 |
commit | 26be68ae9823b7a078c8251f70038d98961388bc (patch) | |
tree | dcd4778a53008b1805224ae3143dd7511adb3b20 /src/hotkeys.cpp | |
parent | 9be9302cdbe5e23ad7565e7d76b9ac2414fb0796 (diff) | |
download | openttd-26be68ae9823b7a078c8251f70038d98961388bc.tar.xz |
(svn r20070) -Feature: when none of the open windows handles a keypress, try all toolbars for global hotkeys
Users that have run a version between r20056 and r20068 should delete their hotkeys.cfg to reset the terraform toolbar hotkeys to default
Diffstat (limited to 'src/hotkeys.cpp')
-rw-r--r-- | src/hotkeys.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/hotkeys.cpp b/src/hotkeys.cpp index eefe96adb..14fb292c2 100644 --- a/src/hotkeys.cpp +++ b/src/hotkeys.cpp @@ -10,10 +10,12 @@ /** @file hotkeys.cpp Implementation of hotkey related functions */ #include "stdafx.h" +#include "openttd.h" #include "hotkeys.h" #include "ini_type.h" #include "string_func.h" #include "gfx_type.h" +#include "window_gui.h" #include <string.h> char *_hotkeys_file; @@ -284,3 +286,37 @@ void SaveHotkeysToConfig() SaveLoadHotkeys(true); } +typedef EventState GlobalHotkeyHandler(uint16, uint16); + +GlobalHotkeyHandler RailToolbarGlobalHotkeys; +GlobalHotkeyHandler DockToolbarGlobalHotkeys; +GlobalHotkeyHandler AirportToolbarGlobalHotkeys; +GlobalHotkeyHandler TerraformToolbarGlobalHotkeys; +GlobalHotkeyHandler TerraformToolbarEditorGlobalHotkeys; + + +GlobalHotkeyHandler *_global_hotkey_handlers[] = { + RailToolbarGlobalHotkeys, + DockToolbarGlobalHotkeys, + AirportToolbarGlobalHotkeys, + TerraformToolbarGlobalHotkeys, +}; + +GlobalHotkeyHandler *_global_hotkey_handlers_editor[] = { + TerraformToolbarEditorGlobalHotkeys, +}; + + +void HandleGlobalHotkeys(uint16 key, uint16 keycode) +{ + if (_game_mode == GM_NORMAL) { + for (uint i = 0; i < lengthof(_global_hotkey_handlers); i++) { + if (_global_hotkey_handlers[i](key, keycode) == ES_HANDLED) return; + } + } else if (_game_mode == GM_EDITOR) { + for (uint i = 0; i < lengthof(_global_hotkey_handlers_editor); i++) { + if (_global_hotkey_handlers_editor[i](key, keycode) == ES_HANDLED) return; + } + } +} + |