From 7d3ae4a058968078ff7d3156ed05e5dd8af49281 Mon Sep 17 00:00:00 2001 From: Finn Willard Date: Sat, 17 Jun 2023 16:28:45 -0700 Subject: [PATCH] Add: Hotkey to focus town directory filter box Co-authored-by: Tyler Trahan --- src/town_gui.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/town_gui.cpp b/src/town_gui.cpp index 81a561676b..dddfc6d81f 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -38,6 +38,7 @@ #include "timer/timer_game_calendar.h" #include "timer/timer_window.h" #include "zoom_func.h" +#include "hotkeys.h" #include "widgets/town_widget.h" @@ -694,6 +695,11 @@ static const NWidgetPart _nested_town_directory_widgets[] = { EndContainer(), }; +/** Enum referring to the Hotkeys in the town directory window */ +enum TownDirectoryHotkeys { + TDHK_FOCUS_FILTER_BOX, ///< Focus the filter box +}; + /** Town directory window class. */ struct TownDirectoryWindow : public Window { private: @@ -1006,6 +1012,23 @@ public: this->towns.ForceResort(); } } + + EventState OnHotkey(int hotkey) override + { + switch (hotkey) { + case TDHK_FOCUS_FILTER_BOX: + this->SetFocusedWidget(WID_TD_FILTER); + SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused. + break; + default: + return ES_NOT_HANDLED; + } + return ES_HANDLED; + } + + static inline HotkeyList hotkeys {"towndirectory", { + Hotkey('F', "focus_filter_box", TDHK_FOCUS_FILTER_BOX), + }}; }; Listing TownDirectoryWindow::last_sorting = {false, 0}; @@ -1029,7 +1052,8 @@ static WindowDesc _town_directory_desc(__FILE__, __LINE__, WDP_AUTO, "list_towns", 208, 202, WC_TOWN_DIRECTORY, WC_NONE, 0, - std::begin(_nested_town_directory_widgets), std::end(_nested_town_directory_widgets) + std::begin(_nested_town_directory_widgets), std::end(_nested_town_directory_widgets), + &TownDirectoryWindow::hotkeys ); void ShowTownDirectory()