From 26be68ae9823b7a078c8251f70038d98961388bc Mon Sep 17 00:00:00 2001 From: yexo Date: Sat, 3 Jul 2010 21:43:44 +0000 Subject: (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 --- src/terraform_gui.cpp | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) (limited to 'src/terraform_gui.cpp') diff --git a/src/terraform_gui.cpp b/src/terraform_gui.cpp index f4a9426a3..7d708c2fe 100644 --- a/src/terraform_gui.cpp +++ b/src/terraform_gui.cpp @@ -286,10 +286,10 @@ struct TerraformToolbarWindow : Window { }; Hotkey TerraformToolbarWindow::terraform_hotkeys[] = { - Hotkey('Q', "lower", TTW_LOWER_LAND), - Hotkey('W', "raise", TTW_RAISE_LAND), - Hotkey('E', "level", TTW_LEVEL_LAND), - Hotkey('D', "dynamite", TTW_DEMOLISH), + Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", TTW_LOWER_LAND), + Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", TTW_RAISE_LAND), + Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", TTW_LEVEL_LAND), + Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", TTW_DEMOLISH), Hotkey('U', "buyland", TTW_BUY_LAND), Hotkey('I', "trees", TTW_PLANT_TREES), Hotkey('O', "placesign", TTW_PLACE_SIGN), @@ -355,14 +355,12 @@ Window *ShowTerraformToolbar(Window *link) return w; } -void ShowTerraformToolbarWithTool(uint16 key, uint16 keycode) +EventState TerraformToolbarGlobalHotkeys(uint16 key, uint16 keycode) { - Window *w = FindWindowById(WC_SCEN_LAND_GEN, 0); - - if (w == NULL) w = ShowTerraformToolbar(NULL); - if (w == NULL) return; - - w->OnKeyPress(key, keycode); + int num = CheckHotkeyMatch(_terraform_hotkeys, keycode, NULL, true); + if (num == -1) return ES_NOT_HANDLED; + Window *w = ShowTerraformToolbar(NULL); + return w->OnKeyPress(key, keycode); } static byte _terraform_size = 1; @@ -742,10 +740,10 @@ struct ScenarioEditorLandscapeGenerationWindow : Window { }; Hotkey ScenarioEditorLandscapeGenerationWindow::terraform_editor_hotkeys[] = { - Hotkey('D', "dynamite", ETTW_DEMOLISH), - Hotkey('Q', "lower", ETTW_LOWER_LAND), - Hotkey('W', "raise", ETTW_RAISE_LAND), - Hotkey('E', "level", ETTW_LEVEL_LAND), + Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", ETTW_DEMOLISH), + Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", ETTW_LOWER_LAND), + Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", ETTW_RAISE_LAND), + Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", ETTW_LEVEL_LAND), Hotkey('R', "rocky", ETTW_PLACE_ROCKS), Hotkey('T', "desertlighthouse", ETTW_PLACE_DESERT_LIGHTHOUSE), Hotkey('Y', "transmitter", ETTW_PLACE_TRANSMITTER), @@ -754,7 +752,6 @@ Hotkey ScenarioEditorLandscapeGeneratio Hotkey *_terraform_editor_hotkeys = ScenarioEditorLandscapeGenerationWindow::terraform_editor_hotkeys; - static const WindowDesc _scen_edit_land_gen_desc( WDP_AUTO, 0, 0, WC_SCEN_LAND_GEN, WC_NONE, @@ -767,12 +764,10 @@ Window *ShowEditorTerraformToolbar() return AllocateWindowDescFront(&_scen_edit_land_gen_desc, 0); } -void ShowEditorTerraformToolbarWithTool(uint16 key, uint16 keycode) +EventState TerraformToolbarEditorGlobalHotkeys(uint16 key, uint16 keycode) { - Window *w = FindWindowById(WC_SCEN_LAND_GEN, 0); - - if (w == NULL) w = ShowEditorTerraformToolbar(); - if (w == NULL) return; - - w->OnKeyPress(key, keycode); + int num = CheckHotkeyMatch(_terraform_editor_hotkeys, keycode, NULL, true); + if (num == -1) return ES_NOT_HANDLED; + Window *w = ShowEditorTerraformToolbar(); + return w->OnKeyPress(key, keycode); } -- cgit v1.2.3-54-g00ecf