(svn r20074) -Fix (r20065): highscore window should use the same hotkey for quit as the toolbar

This commit is contained in:
yexo 2010-07-04 11:28:16 +00:00
parent 19f86951d9
commit 063909962a
3 changed files with 19 additions and 5 deletions

View File

@ -22,6 +22,7 @@
#include "company_base.h" #include "company_base.h"
#include "strings_func.h" #include "strings_func.h"
#include "openttd.h" #include "openttd.h"
#include "hotkeys.h"
enum HighscoreWidgets { enum HighscoreWidgets {
HSW_BACKGROUND, HSW_BACKGROUND,
@ -66,6 +67,11 @@ struct EndGameHighScoreBaseWindow : Window {
virtual EventState OnKeyPress(uint16 key, uint16 keycode) virtual EventState OnKeyPress(uint16 key, uint16 keycode)
{ {
/* All keys are 'handled' by this window but we want to make
* sure that 'quit' still works correctly. Not handling the
* quit key is enough so the main toolbar can handle it. */
if (IsQuitKey(keycode)) return ES_NOT_HANDLED;
switch (keycode) { switch (keycode) {
/* Keys for telling we want to go on */ /* Keys for telling we want to go on */
case WKC_RETURN: case WKC_RETURN:
@ -74,11 +80,6 @@ struct EndGameHighScoreBaseWindow : Window {
delete this; delete this;
return ES_HANDLED; return ES_HANDLED;
/* Allow CTRL-Q to work like ALT-F4 in all cases */
case 'Q' | WKC_CTRL:
case 'Q' | WKC_META:
return ES_NOT_HANDLED;
default: default:
/* We want to handle all keys; we don't want windows in /* We want to handle all keys; we don't want windows in
* the background to open. Especially the ones that do * the background to open. Especially the ones that do

View File

@ -124,6 +124,8 @@ int CheckHotkeyMatch(Hotkey<T> *list, uint16 keycode, T *w, bool global_only = f
return -1; return -1;
} }
bool IsQuitKey(uint16 keycode);
void LoadHotkeysFromConfig(); void LoadHotkeysFromConfig();
void SaveHotkeysToConfig(); void SaveHotkeysToConfig();

View File

@ -467,6 +467,17 @@ Hotkey<MainWindow> MainWindow::global_hotkeys[] = {
}; };
Hotkey<MainWindow> *_global_hotkeys = MainWindow::global_hotkeys; Hotkey<MainWindow> *_global_hotkeys = MainWindow::global_hotkeys;
/**
* Does the given keycode match one of the keycodes bound to 'quit game'?
* @param keycode The keycode that was pressed by the user.
* @return True iff the keycode matches one of the hotkeys for 'quit'.
*/
bool IsQuitKey(uint16 keycode)
{
int num = CheckHotkeyMatch<MainWindow>(_global_hotkeys, keycode, NULL);
return num == GHK_QUIT;
}
void ShowSelectGameWindow(); void ShowSelectGameWindow();