diff -ur orig/openttd-1.3.2/src/ai/ai_gui.cpp openttd-1.3.2/src/ai/ai_gui.cpp --- orig/openttd-1.3.2/src/ai/ai_gui.cpp 2013-07-27 17:09:33.000000000 +0200 +++ openttd-1.3.2/src/ai/ai_gui.cpp 2013-08-09 21:57:58.000000000 +0200 @@ -1303,22 +1303,7 @@ } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - EventState state = ES_NOT_HANDLED; - int num = CheckHotkeyMatch(aidebug_hotkeys, keycode, this); - if (num != -1) { - if (this->show_break_box && num == WID_AID_BREAK_STR_EDIT_BOX) { - this->SetFocusedWidget(WID_AID_BREAK_STR_EDIT_BOX); - SetFocusedWindow(this); - state = ES_HANDLED; - } else if (this->show_break_box || num < WID_AID_BREAK_STRING_WIDGETS) { - this->OnClick(Point(), num, 1); - state = ES_HANDLED; - } - } - return state; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnEditboxChanged(int wid) { @@ -1523,6 +1508,24 @@ return w->OnKeyPress(key, keycode); } +/* virtual */ EventState AIDebugWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + EventState state = ES_NOT_HANDLED; + int num = CheckHotkeyMatch(AIDebugWindow::aidebug_hotkeys, keycode, this); + if (num != -1) { + if (this->show_break_box && num == WID_AID_BREAK_STR_EDIT_BOX) { + this->SetFocusedWidget(WID_AID_BREAK_STR_EDIT_BOX); + SetFocusedWindow(this); + state = ES_HANDLED; + } else if (this->show_break_box || num < WID_AID_BREAK_STRING_WIDGETS) { + this->OnClick(Point(), num, 1); + state = ES_HANDLED; + } + } + return state; +} + + /** * Reset the AI windows to their initial state. */ diff -ur orig/openttd-1.3.2/src/airport_gui.cpp openttd-1.3.2/src/airport_gui.cpp --- orig/openttd-1.3.2/src/airport_gui.cpp 2013-07-27 17:09:39.000000000 +0200 +++ openttd-1.3.2/src/airport_gui.cpp 2013-08-09 22:03:04.000000000 +0200 @@ -99,13 +99,7 @@ } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(airtoolbar_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -152,6 +146,14 @@ }; Hotkey *_airtoolbar_hotkeys = BuildAirToolbarWindow::airtoolbar_hotkeys; +/* virtual */ EventState BuildAirToolbarWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + int num = CheckHotkeyMatch(airtoolbar_hotkeys, keycode, this); + if (num == -1) return ES_NOT_HANDLED; + this->OnClick(Point(), num, 1); + return ES_HANDLED; +} + static const NWidgetPart _nested_air_toolbar_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), diff -ur orig/openttd-1.3.2/src/dock_gui.cpp openttd-1.3.2/src/dock_gui.cpp --- orig/openttd-1.3.2/src/dock_gui.cpp 2013-07-27 17:09:40.000000000 +0200 +++ openttd-1.3.2/src/dock_gui.cpp 2013-08-09 22:11:29.000000000 +0200 @@ -89,6 +89,8 @@ /** Toolbar window for constructing water infrastructure. */ struct BuildDocksToolbarWindow : Window { + static Hotkey dockstoolbar_hotkeys[]; + DockToolbarWidgets last_clicked_widget; ///< Contains the last widget that has been clicked on this toolbar. BuildDocksToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window() @@ -163,13 +165,7 @@ this->last_clicked_widget = (DockToolbarWidgets)widget; } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(dockstoolbar_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -273,7 +269,6 @@ VpSetPresizeRange(tile_from, tile_to); } - static Hotkey dockstoolbar_hotkeys[]; }; const uint16 _dockstoolbar_aqueduct_keys[] = {'B', '8', 0}; @@ -291,6 +286,14 @@ }; Hotkey *_dockstoolbar_hotkeys = BuildDocksToolbarWindow::dockstoolbar_hotkeys; +/* virtual */ EventState BuildDocksToolbarWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + int num = CheckHotkeyMatch(dockstoolbar_hotkeys, keycode, this); + if (num == -1) return ES_NOT_HANDLED; + this->OnClick(Point(), num, 1); + return ES_HANDLED; +} + /** * Nested widget parts of docks toolbar, game version. * Position of #WID_DT_RIVER widget has changed. diff -ur orig/openttd-1.3.2/src/main_gui.cpp openttd-1.3.2/src/main_gui.cpp --- orig/openttd-1.3.2/src/main_gui.cpp 2013-07-27 17:09:40.000000000 +0200 +++ openttd-1.3.2/src/main_gui.cpp 2013-08-09 22:19:30.000000000 +0200 @@ -269,9 +269,102 @@ } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) + virtual EventState OnKeyPress(uint16 key, uint16 keycode); + + virtual void OnScroll(Point delta) + { + this->viewport->scrollpos_x += ScaleByZoom(delta.x, this->viewport->zoom); + this->viewport->scrollpos_y += ScaleByZoom(delta.y, this->viewport->zoom); + this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x; + this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y; + } + + virtual void OnMouseWheel(int wheel) + { + if (_settings_client.gui.scrollwheel_scrolling == 0) { + ZoomInOrOutToCursorWindow(wheel < 0, this); + } + } + + virtual void OnResize() + { + if (this->viewport != NULL) { + NWidgetViewport *nvp = this->GetWidget(WID_M_VIEWPORT); + nvp->UpdateViewportCoordinates(this); + } + } + + /** + * Some data on this window has become invalid. + * @param data Information about the changed data. + * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. + */ + virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { - int num = CheckHotkeyMatch(global_hotkeys, keycode, this); + if (!gui_scope) return; + /* Forward the message to the appropriate toolbar (ingame or scenario editor) */ + InvalidateWindowData(WC_MAIN_TOOLBAR, 0, data, true); + } + + static Hotkey global_hotkeys[]; +}; + +const uint16 _ghk_quit_keys[] = {'Q' | WKC_CTRL, 'Q' | WKC_META, 0}; +const uint16 _ghk_abandon_keys[] = {'W' | WKC_CTRL, 'W' | WKC_META, 0}; +const uint16 _ghk_chat_keys[] = {WKC_RETURN, 'T', 0}; +const uint16 _ghk_chat_all_keys[] = {WKC_SHIFT | WKC_RETURN, WKC_SHIFT | 'T', 0}; +const uint16 _ghk_chat_company_keys[] = {WKC_CTRL | WKC_RETURN, WKC_CTRL | 'T', 0}; +const uint16 _ghk_chat_server_keys[] = {WKC_CTRL | WKC_SHIFT | WKC_RETURN, WKC_CTRL | WKC_SHIFT | 'T', 0}; + +Hotkey MainWindow::global_hotkeys[] = { + Hotkey(_ghk_quit_keys, "quit", GHK_QUIT), + Hotkey(_ghk_abandon_keys, "abandon", GHK_ABANDON), + Hotkey(WKC_BACKQUOTE, "console", GHK_CONSOLE), + Hotkey('B' | WKC_CTRL, "bounding_boxes", GHK_BOUNDING_BOXES), + Hotkey('I' | WKC_CTRL, "dirty_blocks", GHK_DIRTY_BLOCKS), + Hotkey('C', "center", GHK_CENTER), + Hotkey('Z', "center_zoom", GHK_CENTER_ZOOM), + Hotkey(WKC_ESC, "reset_object_to_place", GHK_RESET_OBJECT_TO_PLACE), + Hotkey(WKC_DELETE, "delete_windows", GHK_DELETE_WINDOWS), + Hotkey(WKC_DELETE | WKC_SHIFT, "delete_all_windows", GHK_DELETE_NONVITAL_WINDOWS), + Hotkey('R' | WKC_CTRL, "refresh_screen", GHK_REFRESH_SCREEN), +#if defined(_DEBUG) + Hotkey('0' | WKC_ALT, "crash_game", GHK_CRASH), + Hotkey('1' | WKC_ALT, "money", GHK_MONEY), + Hotkey('2' | WKC_ALT, "update_coordinates", GHK_UPDATE_COORDS), +#endif + Hotkey('1' | WKC_CTRL, "transparency_signs", GHK_TOGGLE_TRANSPARENCY), + Hotkey('2' | WKC_CTRL, "transparency_trees", GHK_TOGGLE_TRANSPARENCY + 1), + Hotkey('3' | WKC_CTRL, "transparency_houses", GHK_TOGGLE_TRANSPARENCY + 2), + Hotkey('4' | WKC_CTRL, "transparency_industries", GHK_TOGGLE_TRANSPARENCY + 3), + Hotkey('5' | WKC_CTRL, "transparency_buildings", GHK_TOGGLE_TRANSPARENCY + 4), + Hotkey('6' | WKC_CTRL, "transparency_bridges", GHK_TOGGLE_TRANSPARENCY + 5), + Hotkey('7' | WKC_CTRL, "transparency_structures", GHK_TOGGLE_TRANSPARENCY + 6), + Hotkey('8' | WKC_CTRL, "transparency_catenary", GHK_TOGGLE_TRANSPARENCY + 7), + Hotkey('9' | WKC_CTRL, "transparency_loading", GHK_TOGGLE_TRANSPARENCY + 8), + Hotkey('1' | WKC_CTRL | WKC_SHIFT, "invisibility_signs", GHK_TOGGLE_INVISIBILITY), + Hotkey('2' | WKC_CTRL | WKC_SHIFT, "invisibility_trees", GHK_TOGGLE_INVISIBILITY + 1), + Hotkey('3' | WKC_CTRL | WKC_SHIFT, "invisibility_houses", GHK_TOGGLE_INVISIBILITY + 2), + Hotkey('4' | WKC_CTRL | WKC_SHIFT, "invisibility_industries", GHK_TOGGLE_INVISIBILITY + 3), + Hotkey('5' | WKC_CTRL | WKC_SHIFT, "invisibility_buildings", GHK_TOGGLE_INVISIBILITY + 4), + Hotkey('6' | WKC_CTRL | WKC_SHIFT, "invisibility_bridges", GHK_TOGGLE_INVISIBILITY + 5), + Hotkey('7' | WKC_CTRL | WKC_SHIFT, "invisibility_structures", GHK_TOGGLE_INVISIBILITY + 6), + Hotkey('8' | WKC_CTRL | WKC_SHIFT, "invisibility_catenary", GHK_TOGGLE_INVISIBILITY + 7), + Hotkey('X' | WKC_CTRL, "transparency_toolbar", GHK_TRANSPARENCY_TOOLBAR), + Hotkey('X', "toggle_transparency", GHK_TRANSPARANCY), +#ifdef ENABLE_NETWORK + Hotkey(_ghk_chat_keys, "chat", GHK_CHAT), + Hotkey(_ghk_chat_all_keys, "chat_all", GHK_CHAT_ALL), + Hotkey(_ghk_chat_company_keys, "chat_company", GHK_CHAT_COMPANY), + Hotkey(_ghk_chat_server_keys, "chat_server", GHK_CHAT_SERVER), +#endif + HOTKEY_LIST_END(MainWindow) +}; +Hotkey *_global_hotkeys = MainWindow::global_hotkeys; + +/* virtual */ EventState MainWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + int num = CheckHotkeyMatch(MainWindow::global_hotkeys, keycode, this); if (num == GHK_QUIT) { HandleExitGameRequest(); return ES_HANDLED; @@ -409,98 +502,6 @@ } return ES_HANDLED; } - - virtual void OnScroll(Point delta) - { - this->viewport->scrollpos_x += ScaleByZoom(delta.x, this->viewport->zoom); - this->viewport->scrollpos_y += ScaleByZoom(delta.y, this->viewport->zoom); - this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x; - this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y; - } - - virtual void OnMouseWheel(int wheel) - { - if (_settings_client.gui.scrollwheel_scrolling == 0) { - ZoomInOrOutToCursorWindow(wheel < 0, this); - } - } - - virtual void OnResize() - { - if (this->viewport != NULL) { - NWidgetViewport *nvp = this->GetWidget(WID_M_VIEWPORT); - nvp->UpdateViewportCoordinates(this); - } - } - - /** - * Some data on this window has become invalid. - * @param data Information about the changed data. - * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details. - */ - virtual void OnInvalidateData(int data = 0, bool gui_scope = true) - { - if (!gui_scope) return; - /* Forward the message to the appropriate toolbar (ingame or scenario editor) */ - InvalidateWindowData(WC_MAIN_TOOLBAR, 0, data, true); - } - - static Hotkey global_hotkeys[]; -}; - -const uint16 _ghk_quit_keys[] = {'Q' | WKC_CTRL, 'Q' | WKC_META, 0}; -const uint16 _ghk_abandon_keys[] = {'W' | WKC_CTRL, 'W' | WKC_META, 0}; -const uint16 _ghk_chat_keys[] = {WKC_RETURN, 'T', 0}; -const uint16 _ghk_chat_all_keys[] = {WKC_SHIFT | WKC_RETURN, WKC_SHIFT | 'T', 0}; -const uint16 _ghk_chat_company_keys[] = {WKC_CTRL | WKC_RETURN, WKC_CTRL | 'T', 0}; -const uint16 _ghk_chat_server_keys[] = {WKC_CTRL | WKC_SHIFT | WKC_RETURN, WKC_CTRL | WKC_SHIFT | 'T', 0}; - -Hotkey MainWindow::global_hotkeys[] = { - Hotkey(_ghk_quit_keys, "quit", GHK_QUIT), - Hotkey(_ghk_abandon_keys, "abandon", GHK_ABANDON), - Hotkey(WKC_BACKQUOTE, "console", GHK_CONSOLE), - Hotkey('B' | WKC_CTRL, "bounding_boxes", GHK_BOUNDING_BOXES), - Hotkey('I' | WKC_CTRL, "dirty_blocks", GHK_DIRTY_BLOCKS), - Hotkey('C', "center", GHK_CENTER), - Hotkey('Z', "center_zoom", GHK_CENTER_ZOOM), - Hotkey(WKC_ESC, "reset_object_to_place", GHK_RESET_OBJECT_TO_PLACE), - Hotkey(WKC_DELETE, "delete_windows", GHK_DELETE_WINDOWS), - Hotkey(WKC_DELETE | WKC_SHIFT, "delete_all_windows", GHK_DELETE_NONVITAL_WINDOWS), - Hotkey('R' | WKC_CTRL, "refresh_screen", GHK_REFRESH_SCREEN), -#if defined(_DEBUG) - Hotkey('0' | WKC_ALT, "crash_game", GHK_CRASH), - Hotkey('1' | WKC_ALT, "money", GHK_MONEY), - Hotkey('2' | WKC_ALT, "update_coordinates", GHK_UPDATE_COORDS), -#endif - Hotkey('1' | WKC_CTRL, "transparency_signs", GHK_TOGGLE_TRANSPARENCY), - Hotkey('2' | WKC_CTRL, "transparency_trees", GHK_TOGGLE_TRANSPARENCY + 1), - Hotkey('3' | WKC_CTRL, "transparency_houses", GHK_TOGGLE_TRANSPARENCY + 2), - Hotkey('4' | WKC_CTRL, "transparency_industries", GHK_TOGGLE_TRANSPARENCY + 3), - Hotkey('5' | WKC_CTRL, "transparency_buildings", GHK_TOGGLE_TRANSPARENCY + 4), - Hotkey('6' | WKC_CTRL, "transparency_bridges", GHK_TOGGLE_TRANSPARENCY + 5), - Hotkey('7' | WKC_CTRL, "transparency_structures", GHK_TOGGLE_TRANSPARENCY + 6), - Hotkey('8' | WKC_CTRL, "transparency_catenary", GHK_TOGGLE_TRANSPARENCY + 7), - Hotkey('9' | WKC_CTRL, "transparency_loading", GHK_TOGGLE_TRANSPARENCY + 8), - Hotkey('1' | WKC_CTRL | WKC_SHIFT, "invisibility_signs", GHK_TOGGLE_INVISIBILITY), - Hotkey('2' | WKC_CTRL | WKC_SHIFT, "invisibility_trees", GHK_TOGGLE_INVISIBILITY + 1), - Hotkey('3' | WKC_CTRL | WKC_SHIFT, "invisibility_houses", GHK_TOGGLE_INVISIBILITY + 2), - Hotkey('4' | WKC_CTRL | WKC_SHIFT, "invisibility_industries", GHK_TOGGLE_INVISIBILITY + 3), - Hotkey('5' | WKC_CTRL | WKC_SHIFT, "invisibility_buildings", GHK_TOGGLE_INVISIBILITY + 4), - Hotkey('6' | WKC_CTRL | WKC_SHIFT, "invisibility_bridges", GHK_TOGGLE_INVISIBILITY + 5), - Hotkey('7' | WKC_CTRL | WKC_SHIFT, "invisibility_structures", GHK_TOGGLE_INVISIBILITY + 6), - Hotkey('8' | WKC_CTRL | WKC_SHIFT, "invisibility_catenary", GHK_TOGGLE_INVISIBILITY + 7), - Hotkey('X' | WKC_CTRL, "transparency_toolbar", GHK_TRANSPARENCY_TOOLBAR), - Hotkey('X', "toggle_transparency", GHK_TRANSPARANCY), -#ifdef ENABLE_NETWORK - Hotkey(_ghk_chat_keys, "chat", GHK_CHAT), - Hotkey(_ghk_chat_all_keys, "chat_all", GHK_CHAT_ALL), - Hotkey(_ghk_chat_company_keys, "chat_company", GHK_CHAT_COMPANY), - Hotkey(_ghk_chat_server_keys, "chat_server", GHK_CHAT_SERVER), -#endif - HOTKEY_LIST_END(MainWindow) -}; -Hotkey *_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. diff -ur orig/openttd-1.3.2/src/order_gui.cpp openttd-1.3.2/src/order_gui.cpp --- orig/openttd-1.3.2/src/order_gui.cpp 2013-07-27 17:09:39.000000000 +0200 +++ openttd-1.3.2/src/order_gui.cpp 2013-08-09 22:28:07.000000000 +0200 @@ -1437,12 +1437,7 @@ } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - if (this->vehicle->owner != _local_company) return ES_NOT_HANDLED; - - return CheckHotkeyMatch(order_hotkeys, keycode, this) != -1 ? ES_HANDLED : ES_NOT_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -1532,6 +1527,12 @@ }; Hotkey *_order_hotkeys = OrdersWindow::order_hotkeys; +/* virtual */ EventState OrdersWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + if (this->vehicle->owner != _local_company) return ES_NOT_HANDLED; + return CheckHotkeyMatch(order_hotkeys, keycode, this) != -1 ? ES_HANDLED : ES_NOT_HANDLED; +} + /** Nested widget definition for "your" train orders. */ static const NWidgetPart _nested_orders_train_widgets[] = { NWidget(NWID_HORIZONTAL), diff -ur orig/openttd-1.3.2/src/rail_gui.cpp openttd-1.3.2/src/rail_gui.cpp --- orig/openttd-1.3.2/src/rail_gui.cpp 2013-07-27 17:09:39.000000000 +0200 +++ openttd-1.3.2/src/rail_gui.cpp 2013-08-09 22:49:33.000000000 +0200 @@ -596,14 +596,7 @@ if (_ctrl_pressed) RailToolbar_CtrlChanged(this); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(railtoolbar_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -778,6 +771,15 @@ }; Hotkey *_railtoolbar_hotkeys = BuildRailToolbarWindow::railtoolbar_hotkeys; +/* virtual */ EventState BuildRailToolbarWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + int num = CheckHotkeyMatch(railtoolbar_hotkeys, keycode, this); + if (num == -1) return ES_NOT_HANDLED; + this->OnClick(Point(), num, 1); + MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection + return ES_HANDLED; +} + static const NWidgetPart _nested_build_rail_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), Only in openttd-1.3.2/src/: rev.cpp diff -ur orig/openttd-1.3.2/src/road_gui.cpp openttd-1.3.2/src/road_gui.cpp --- orig/openttd-1.3.2/src/road_gui.cpp 2013-07-27 17:09:40.000000000 +0200 +++ openttd-1.3.2/src/road_gui.cpp 2013-08-09 22:51:52.000000000 +0200 @@ -473,14 +473,7 @@ if (_ctrl_pressed) RoadToolbar_CtrlChanged(this); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(roadtoolbar_hotkeys, keycode, this); - if (num == -1 || this->GetWidget(num) == NULL) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -679,6 +672,15 @@ }; Hotkey *_roadtoolbar_hotkeys = BuildRoadToolbarWindow::roadtoolbar_hotkeys; +/* virtual */ EventState BuildRoadToolbarWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + int num = CheckHotkeyMatch(roadtoolbar_hotkeys, keycode, this); + if (num == -1 || this->GetWidget(num) == NULL) return ES_NOT_HANDLED; + this->OnClick(Point(), num, 1); + MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection + return ES_HANDLED; +} + static const NWidgetPart _nested_build_road_widgets[] = { NWidget(NWID_HORIZONTAL), diff -ur orig/openttd-1.3.2/src/signs_gui.cpp openttd-1.3.2/src/signs_gui.cpp --- orig/openttd-1.3.2/src/signs_gui.cpp 2013-07-27 17:09:40.000000000 +0200 +++ openttd-1.3.2/src/signs_gui.cpp 2013-08-09 23:05:03.000000000 +0200 @@ -281,18 +281,8 @@ } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - EventState state = ES_NOT_HANDLED; - if (CheckHotkeyMatch(signlist_hotkeys, keycode, this) == SLHK_FOCUS_FILTER_BOX) { - this->SetFocusedWidget(WID_SIL_FILTER_TEXT); - SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused. - state = ES_HANDLED; - } - - return state; - } - + virtual EventState OnKeyPress(uint16 key, uint16 keycode); + virtual void OnEditboxChanged(int widget) { if (widget == WID_SIL_FILTER_TEXT) this->SetFilterString(this->filter_editbox.text.buf); @@ -341,6 +331,18 @@ }; Hotkey *_signlist_hotkeys = SignListWindow::signlist_hotkeys; +/* virtual */ EventState SignListWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + EventState state = ES_NOT_HANDLED; + if (CheckHotkeyMatch(signlist_hotkeys, keycode, this) == SLHK_FOCUS_FILTER_BOX) { + this->SetFocusedWidget(WID_SIL_FILTER_TEXT); + SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused. + state = ES_HANDLED; + } + + return state; +} + static const NWidgetPart _nested_sign_list_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), diff -ur orig/openttd-1.3.2/src/terraform_gui.cpp openttd-1.3.2/src/terraform_gui.cpp --- orig/openttd-1.3.2/src/terraform_gui.cpp 2013-07-27 17:09:39.000000000 +0200 +++ openttd-1.3.2/src/terraform_gui.cpp 2013-08-09 23:11:13.000000000 +0200 @@ -218,13 +218,7 @@ } } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(terraform_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -310,6 +304,14 @@ }; Hotkey *_terraform_hotkeys = TerraformToolbarWindow::terraform_hotkeys; +/* virtual */ EventState TerraformToolbarWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + int num = CheckHotkeyMatch(terraform_hotkeys, keycode, this); + if (num == -1) return ES_NOT_HANDLED; + this->OnClick(Point(), num, 1); + return ES_HANDLED; +} + static const NWidgetPart _nested_terraform_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), @@ -571,13 +573,7 @@ } while (--n); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - int num = CheckHotkeyMatch(terraform_editor_hotkeys, keycode, this); - if (num == -1) return ES_NOT_HANDLED; - this->OnClick(Point(), num, 1); - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnClick(Point pt, int widget, int click_count) { @@ -739,6 +735,14 @@ Hotkey *_terraform_editor_hotkeys = ScenarioEditorLandscapeGenerationWindow::terraform_editor_hotkeys; +/* virtual */ EventState ScenarioEditorLandscapeGenerationWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + int num = CheckHotkeyMatch(terraform_editor_hotkeys, keycode, this); + if (num == -1) return ES_NOT_HANDLED; + this->OnClick(Point(), num, 1); + return ES_HANDLED; +} + static const WindowDesc _scen_edit_land_gen_desc( WDP_AUTO, 0, 0, WC_SCEN_LAND_GEN, WC_NONE, diff -ur orig/openttd-1.3.2/src/toolbar_gui.cpp openttd-1.3.2/src/toolbar_gui.cpp --- orig/openttd-1.3.2/src/toolbar_gui.cpp 2013-07-27 17:09:39.000000000 +0200 +++ openttd-1.3.2/src/toolbar_gui.cpp 2013-08-09 23:18:08.000000000 +0200 @@ -1587,51 +1587,7 @@ if (cbf != CBF_NONE) this->last_started_action = cbf; } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - switch (CheckHotkeyMatch(maintoolbar_hotkeys, keycode, this)) { - case MTHK_PAUSE: ToolbarPauseClick(this); break; - case MTHK_FASTFORWARD: ToolbarFastForwardClick(this); break; - case MTHK_SETTINGS: ShowGameOptions(); break; - case MTHK_SAVEGAME: MenuClickSaveLoad(); break; - case MTHK_LOADGAME: ShowSaveLoadDialog(SLD_LOAD_GAME); break; - case MTHK_SMALLMAP: ShowSmallMap(); break; - case MTHK_TOWNDIRECTORY: ShowTownDirectory(); break; - case MTHK_SUBSIDIES: ShowSubsidiesList(); break; - case MTHK_STATIONS: ShowCompanyStations(_local_company); break; - case MTHK_FINANCES: ShowCompanyFinances(_local_company); break; - case MTHK_COMPANIES: ShowCompany(_local_company); break; - case MTHK_GRAPHS: ShowOperatingProfitGraph(); break; - case MTHK_LEAGUE: ShowCompanyLeagueTable(); break; - case MTHK_INDUSTRIES: ShowBuildIndustryWindow(); break; - case MTHK_TRAIN_LIST: ShowVehicleListWindow(_local_company, VEH_TRAIN); break; - case MTHK_ROADVEH_LIST: ShowVehicleListWindow(_local_company, VEH_ROAD); break; - case MTHK_SHIP_LIST: ShowVehicleListWindow(_local_company, VEH_SHIP); break; - case MTHK_AIRCRAFT_LIST: ShowVehicleListWindow(_local_company, VEH_AIRCRAFT); break; - case MTHK_ZOOM_IN: ToolbarZoomInClick(this); break; - case MTHK_ZOOM_OUT: ToolbarZoomOutClick(this); break; - case MTHK_BUILD_RAIL: if (CanBuildVehicleInfrastructure(VEH_TRAIN)) ShowBuildRailToolbar(_last_built_railtype); break; - case MTHK_BUILD_ROAD: ShowBuildRoadToolbar(_last_built_roadtype); break; - case MTHK_BUILD_DOCKS: ShowBuildDocksToolbar(); break; - case MTHK_BUILD_AIRPORT: if (CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) ShowBuildAirToolbar(); break; - case MTHK_BUILD_TREES: ShowBuildTreesToolbar(); break; - case MTHK_MUSIC: ShowMusicWindow(); break; - case MTHK_AI_DEBUG: ShowAIDebugWindow(); break; - case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break; - case MTHK_ZOOMEDIN_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_ZOOMEDIN); break; - case MTHK_DEFAULTZOOM_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_DEFAULTZOOM); break; - case MTHK_GIANT_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_WORLD); break; - case MTHK_CHEATS: if (!_networking) ShowCheatWindow(); break; - case MTHK_TERRAFORM: ShowTerraformToolbar(); break; - case MTHK_EXTRA_VIEWPORT: ShowExtraViewPortWindowForTileUnderCursor(); break; -#ifdef ENABLE_NETWORK - case MTHK_CLIENT_LIST: if (_networking) ShowClientList(); break; -#endif - case MTHK_SIGN_LIST: ShowSignList(); break; - default: return ES_NOT_HANDLED; - } - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -1735,6 +1691,52 @@ }; Hotkey *_maintoolbar_hotkeys = MainToolbarWindow::maintoolbar_hotkeys; +/* virtual */ EventState MainToolbarWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + switch (CheckHotkeyMatch(maintoolbar_hotkeys, keycode, this)) { + case MTHK_PAUSE: ToolbarPauseClick(this); break; + case MTHK_FASTFORWARD: ToolbarFastForwardClick(this); break; + case MTHK_SETTINGS: ShowGameOptions(); break; + case MTHK_SAVEGAME: MenuClickSaveLoad(); break; + case MTHK_LOADGAME: ShowSaveLoadDialog(SLD_LOAD_GAME); break; + case MTHK_SMALLMAP: ShowSmallMap(); break; + case MTHK_TOWNDIRECTORY: ShowTownDirectory(); break; + case MTHK_SUBSIDIES: ShowSubsidiesList(); break; + case MTHK_STATIONS: ShowCompanyStations(_local_company); break; + case MTHK_FINANCES: ShowCompanyFinances(_local_company); break; + case MTHK_COMPANIES: ShowCompany(_local_company); break; + case MTHK_GRAPHS: ShowOperatingProfitGraph(); break; + case MTHK_LEAGUE: ShowCompanyLeagueTable(); break; + case MTHK_INDUSTRIES: ShowBuildIndustryWindow(); break; + case MTHK_TRAIN_LIST: ShowVehicleListWindow(_local_company, VEH_TRAIN); break; + case MTHK_ROADVEH_LIST: ShowVehicleListWindow(_local_company, VEH_ROAD); break; + case MTHK_SHIP_LIST: ShowVehicleListWindow(_local_company, VEH_SHIP); break; + case MTHK_AIRCRAFT_LIST: ShowVehicleListWindow(_local_company, VEH_AIRCRAFT); break; + case MTHK_ZOOM_IN: ToolbarZoomInClick(this); break; + case MTHK_ZOOM_OUT: ToolbarZoomOutClick(this); break; + case MTHK_BUILD_RAIL: if (CanBuildVehicleInfrastructure(VEH_TRAIN)) ShowBuildRailToolbar(_last_built_railtype); break; + case MTHK_BUILD_ROAD: ShowBuildRoadToolbar(_last_built_roadtype); break; + case MTHK_BUILD_DOCKS: ShowBuildDocksToolbar(); break; + case MTHK_BUILD_AIRPORT: if (CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) ShowBuildAirToolbar(); break; + case MTHK_BUILD_TREES: ShowBuildTreesToolbar(); break; + case MTHK_MUSIC: ShowMusicWindow(); break; + case MTHK_AI_DEBUG: ShowAIDebugWindow(); break; + case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break; + case MTHK_ZOOMEDIN_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_ZOOMEDIN); break; + case MTHK_DEFAULTZOOM_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_DEFAULTZOOM); break; + case MTHK_GIANT_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_WORLD); break; + case MTHK_CHEATS: if (!_networking) ShowCheatWindow(); break; + case MTHK_TERRAFORM: ShowTerraformToolbar(); break; + case MTHK_EXTRA_VIEWPORT: ShowExtraViewPortWindowForTileUnderCursor(); break; +#ifdef ENABLE_NETWORK + case MTHK_CLIENT_LIST: if (_networking) ShowClientList(); break; +#endif + case MTHK_SIGN_LIST: ShowSignList(); break; + default: return ES_NOT_HANDLED; + } + return ES_HANDLED; +} + static NWidgetBase *MakeMainToolbar(int *biggest_index) { /** Sprites to use for the different toolbar buttons */ @@ -1925,37 +1927,7 @@ if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); } - virtual EventState OnKeyPress(uint16 key, uint16 keycode) - { - CallBackFunction cbf = CBF_NONE; - switch (CheckHotkeyMatch(scenedit_maintoolbar_hotkeys, keycode, this)) { - case MTEHK_PAUSE: ToolbarPauseClick(this); break; - case MTEHK_FASTFORWARD: ToolbarFastForwardClick(this); break; - case MTEHK_SETTINGS: ShowGameOptions(); break; - case MTEHK_SAVEGAME: MenuClickSaveLoad(); break; - case MTEHK_GENLAND: ToolbarScenGenLand(this); break; - case MTEHK_GENTOWN: ToolbarScenGenTown(this); break; - case MTEHK_GENINDUSTRY: ToolbarScenGenIndustry(this); break; - case MTEHK_BUILD_ROAD: ToolbarScenBuildRoad(this); break; - case MTEHK_BUILD_DOCKS: ToolbarScenBuildDocks(this); break; - case MTEHK_BUILD_TREES: ToolbarScenPlantTrees(this); break; - case MTEHK_SIGN: cbf = ToolbarScenPlaceSign(this); break; - case MTEHK_MUSIC: ShowMusicWindow(); break; - case MTEHK_LANDINFO: cbf = PlaceLandBlockInfo(); break; - case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break; - case MTEHK_ZOOMEDIN_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_ZOOMEDIN); break; - case MTEHK_DEFAULTZOOM_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_DEFAULTZOOM); break; - case MTEHK_GIANT_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_WORLD); break; - case MTEHK_ZOOM_IN: ToolbarZoomInClick(this); break; - case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(this); break; - case MTEHK_TERRAFORM: ShowEditorTerraformToolbar(); break; - case MTEHK_SMALLMAP: ShowSmallMap(); break; - case MTEHK_EXTRA_VIEWPORT: ShowExtraViewPortWindowForTileUnderCursor(); break; - default: return ES_NOT_HANDLED; - } - if (cbf != CBF_NONE) this->last_started_action = cbf; - return ES_HANDLED; - } + virtual EventState OnKeyPress(uint16 key, uint16 keycode); virtual void OnPlaceObject(Point pt, TileIndex tile) { @@ -2051,6 +2023,38 @@ }; Hotkey *_scenedit_maintoolbar_hotkeys = ScenarioEditorToolbarWindow::scenedit_maintoolbar_hotkeys; +/* virtual */ EventState ScenarioEditorToolbarWindow::OnKeyPress(uint16 key, uint16 keycode) +{ + CallBackFunction cbf = CBF_NONE; + switch (CheckHotkeyMatch(scenedit_maintoolbar_hotkeys, keycode, this)) { + case MTEHK_PAUSE: ToolbarPauseClick(this); break; + case MTEHK_FASTFORWARD: ToolbarFastForwardClick(this); break; + case MTEHK_SETTINGS: ShowGameOptions(); break; + case MTEHK_SAVEGAME: MenuClickSaveLoad(); break; + case MTEHK_GENLAND: ToolbarScenGenLand(this); break; + case MTEHK_GENTOWN: ToolbarScenGenTown(this); break; + case MTEHK_GENINDUSTRY: ToolbarScenGenIndustry(this); break; + case MTEHK_BUILD_ROAD: ToolbarScenBuildRoad(this); break; + case MTEHK_BUILD_DOCKS: ToolbarScenBuildDocks(this); break; + case MTEHK_BUILD_TREES: ToolbarScenPlantTrees(this); break; + case MTEHK_SIGN: cbf = ToolbarScenPlaceSign(this); break; + case MTEHK_MUSIC: ShowMusicWindow(); break; + case MTEHK_LANDINFO: cbf = PlaceLandBlockInfo(); break; + case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break; + case MTEHK_ZOOMEDIN_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_ZOOMEDIN); break; + case MTEHK_DEFAULTZOOM_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_DEFAULTZOOM); break; + case MTEHK_GIANT_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_WORLD); break; + case MTEHK_ZOOM_IN: ToolbarZoomInClick(this); break; + case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(this); break; + case MTEHK_TERRAFORM: ShowEditorTerraformToolbar(); break; + case MTEHK_SMALLMAP: ShowSmallMap(); break; + case MTEHK_EXTRA_VIEWPORT: ShowExtraViewPortWindowForTileUnderCursor(); break; + default: return ES_NOT_HANDLED; + } + if (cbf != CBF_NONE) this->last_started_action = cbf; + return ES_HANDLED; +} + static const NWidgetPart _nested_toolb_scen_inner_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_GREY, WID_TE_PAUSE), SetDataTip(SPR_IMG_PAUSE, STR_TOOLBAR_TOOLTIP_PAUSE_GAME), NWidget(WWT_IMGBTN, COLOUR_GREY, WID_TE_FAST_FORWARD), SetDataTip(SPR_IMG_FASTFORWARD, STR_TOOLBAR_TOOLTIP_FORWARD),