From 3a42340db3009bfb907394466685e6ae87147ce4 Mon Sep 17 00:00:00 2001 From: Finn Willard Date: Sat, 17 Jun 2023 17:51:10 -0700 Subject: [PATCH] Add: Hotkey to focus industry directory filter box Co-authored-by: Tyler Trahan --- src/industry_gui.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index d4f659f9b8..6ed6f03ea7 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -44,6 +44,7 @@ #include "stringfilter_type.h" #include "timer/timer.h" #include "timer/timer_window.h" +#include "hotkeys.h" #include "table/strings.h" @@ -1299,7 +1300,10 @@ static bool CDECL CargoFilter(const Industry * const *industry, const std::pair< static GUIIndustryList::FilterFunction * const _filter_funcs[] = { &CargoFilter }; - +/** Enum referring to the Hotkeys in the industry directory window */ +enum IndustryDirectoryHotkeys { + IDHK_FOCUS_FILTER_BOX, ///< Focus the filter box +}; /** * The list of industries. */ @@ -1864,6 +1868,23 @@ public: break; } } + + EventState OnHotkey(int hotkey) override + { + switch (hotkey) { + case IDHK_FOCUS_FILTER_BOX: + this->SetFocusedWidget(WID_ID_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 {"industrydirectory", { + Hotkey('F', "focus_filter_box", IDHK_FOCUS_FILTER_BOX), + }}; }; Listing IndustryDirectoryWindow::last_sorting = {false, 0}; @@ -1893,7 +1914,8 @@ static WindowDesc _industry_directory_desc(__FILE__, __LINE__, WDP_AUTO, "list_industries", 428, 190, WC_INDUSTRY_DIRECTORY, WC_NONE, 0, - std::begin(_nested_industry_directory_widgets), std::end(_nested_industry_directory_widgets) + std::begin(_nested_industry_directory_widgets), std::end(_nested_industry_directory_widgets), + &IndustryDirectoryWindow::hotkeys ); void ShowIndustryDirectory()