(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 "strings_func.h"
#include "openttd.h"
#include "hotkeys.h"
enum HighscoreWidgets {
HSW_BACKGROUND,
@ -66,6 +67,11 @@ struct EndGameHighScoreBaseWindow : Window {
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) {
/* Keys for telling we want to go on */
case WKC_RETURN:
@ -74,11 +80,6 @@ struct EndGameHighScoreBaseWindow : Window {
delete this;
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:
/* We want to handle all keys; we don't want windows in
* 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;
}
bool IsQuitKey(uint16 keycode);
void LoadHotkeysFromConfig();
void SaveHotkeysToConfig();

View File

@ -467,6 +467,17 @@ Hotkey<MainWindow> 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();