diff options
author | frosch <frosch@openttd.org> | 2013-06-15 15:27:33 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2013-06-15 15:27:33 +0000 |
commit | d9e9710cb3c4273d3742d0097dbe0b78511a5511 (patch) | |
tree | a107a3a43bbd18fb929a32c3298c75bba31ce7b8 /src/hotkeys.h | |
parent | cd0a57fba30a7d365ab84af9846860c64da6b242 (diff) | |
download | openttd-d9e9710cb3c4273d3742d0097dbe0b78511a5511.tar.xz |
(svn r25408) -Codechange: Simplify hotkeys by removing unused stuff.
Diffstat (limited to 'src/hotkeys.h')
-rw-r--r-- | src/hotkeys.h | 100 |
1 files changed, 5 insertions, 95 deletions
diff --git a/src/hotkeys.h b/src/hotkeys.h index b87787e1b..87fafe2a1 100644 --- a/src/hotkeys.h +++ b/src/hotkeys.h @@ -19,110 +19,20 @@ * All data for a single hotkey. The name (for saving/loading a configfile), * a list of keycodes and a number to help identifying this hotkey. */ -template<class T> struct Hotkey { - typedef void (T::*hotkey_callback)(int); + Hotkey(uint16 default_keycode, const char *name, int num); + Hotkey(const uint16 *default_keycodes, const char *name, int num); - /** - * A wrapper around the callback function. This wrapper is needed because - * the size of a pointer to a member function depends on the class - * definition. The possible solutions are to either wrap the callback - * pointer in a class and dynamically allocate memory for it like we do - * now or making all class definitions available in hotkeys.cpp. - */ - struct CallbackWrapper { - CallbackWrapper(hotkey_callback callback) : - callback(callback) - {} - hotkey_callback callback; - }; - - /** - * Create a new Hotkey object with a single default keycode. - * @param default_keycode The default keycode for this hotkey. - * @param name The name of this hotkey. - * @param num Number of this hotkey, should be unique within the hotkey list. - * @param callback The function to call if the hotkey is pressed. - */ - Hotkey(uint16 default_keycode, const char *name, int num, hotkey_callback callback = NULL) : - name(name), - num(num) - { - if (callback == NULL) { - this->callback = NULL; - } else { - this->callback = new CallbackWrapper(callback); - } - if (default_keycode != 0) this->AddKeycode(default_keycode); - } - - /** - * Create a new Hotkey object with multiple default keycodes. - * @param default_keycodes An array of default keycodes terminated with 0. - * @param name The name of this hotkey. - * @param num Number of this hotkey, should be unique within the hotkey list. - * @param callback The function to call if the hotkey is pressed. - */ - Hotkey(const uint16 *default_keycodes, const char *name, int num, hotkey_callback callback = NULL) : - name(name), - num(num) - { - if (callback == NULL) { - this->callback = NULL; - } else { - this->callback = new CallbackWrapper(callback); - } - - const uint16 *keycode = default_keycodes; - while (*keycode != 0) { - this->AddKeycode(*keycode); - keycode++; - } - } - - ~Hotkey() - { - delete this->callback; - } - - /** - * Add a keycode to this hotkey, from now that keycode will be matched - * in addition to any previously added keycodes. - * @param keycode The keycode to add. - */ - void AddKeycode(uint16 keycode) - { - this->keycodes.Include(keycode); - } + void AddKeycode(uint16 keycode); const char *name; int num; SmallVector<uint16, 1> keycodes; - CallbackWrapper *callback; }; -#define HOTKEY_LIST_END(window_class) Hotkey<window_class>((uint16)0, NULL, -1) +#define HOTKEY_LIST_END Hotkey((uint16)0, NULL, -1) -/** - * Check if a keycode is bound to something. - * @param list The list with hotkeys to check - * @param keycode The keycode that was pressed - * @param w The window-pointer to give to the callback function (if any). - * @param global_only Limit the search to hotkeys defined as 'global'. - * @return The number of the matching hotkey or -1. - */ -template<class T> -int CheckHotkeyMatch(Hotkey<T> *list, uint16 keycode, T *w, bool global_only = false) -{ - while (list->num != -1) { - if (list->keycodes.Contains(keycode | WKC_GLOBAL_HOTKEY) || (!global_only && list->keycodes.Contains(keycode))) { - if (!global_only && list->callback != NULL) (w->*(list->callback->callback))(-1); - return list->num; - } - list++; - } - return -1; -} +int CheckHotkeyMatch(Hotkey *list, uint16 keycode, bool global_only = false); bool IsQuitKey(uint16 keycode); |