Browse Source

Remove default focus from spellbook search, allow toggling focus via shortcut

Dydzio 8 months ago
parent
commit
58042c5cd6

+ 1 - 0
client/gui/Shortcut.h

@@ -295,6 +295,7 @@ enum class EShortcut
 	// Spellbook screen
 	SPELLBOOK_TAB_ADVENTURE,
 	SPELLBOOK_TAB_COMBAT,
+	SPELLBOOK_SEARCH_FOCUS,
 
 	LIST_HERO_UP,
 	LIST_HERO_DOWN,

+ 1 - 0
client/gui/ShortcutHandler.cpp

@@ -277,6 +277,7 @@ EShortcut ShortcutHandler::findShortcut(const std::string & identifier ) const
 		{"heroCostumeLoad9",         EShortcut::HERO_COSTUME_LOAD_9       },
 		{"spellbookTabAdventure",    EShortcut::SPELLBOOK_TAB_ADVENTURE   },
 		{"spellbookTabCombat",       EShortcut::SPELLBOOK_TAB_COMBAT      },
+		{"spellbookSearchFocus",     EShortcut::SPELLBOOK_SEARCH_FOCUS    },
 		{"listHeroUp",               EShortcut::LIST_HERO_UP              },
 		{"listHeroDown",             EShortcut::LIST_HERO_DOWN            },
 		{"listHeroTop",              EShortcut::LIST_HERO_TOP             },

+ 12 - 1
client/windows/CSpellWindow.cpp

@@ -138,7 +138,7 @@ CSpellWindow::CSpellWindow(const CGHeroInstance * _myHero, CPlayerInterface * _m
 		searchBoxRectangle = std::make_shared<TransparentFilledRectangle>(r.resize(1), rectangleColor, borderColor);
 		searchBoxDescription = std::make_shared<CLabel>(r.center().x, r.center().y, FONT_SMALL, ETextAlignment::CENTER, grayedColor, CGI->generaltexth->translate("vcmi.spellBook.search"));
 
-		searchBox = std::make_shared<CTextInput>(r, FONT_SMALL, ETextAlignment::CENTER, true);
+		searchBox = std::make_shared<CTextInput>(r, FONT_SMALL, ETextAlignment::CENTER, false);
 		searchBox->setCallback(std::bind(&CSpellWindow::searchInput, this));
 	}
 
@@ -354,6 +354,14 @@ void CSpellWindow::fbattleSpellsb()
 	computeSpellsPerArea();
 }
 
+void CSpellWindow::toggleSearchBoxFocus()
+{
+	if(searchBox != nullptr)
+	{
+		searchBox->hasFocus() ? searchBox->removeFocus() : searchBox->giveFocus();
+	}
+}
+
 void CSpellWindow::fmanaPtsb()
 {
 }
@@ -546,6 +554,9 @@ void CSpellWindow::keyPressed(EShortcut key)
 		case EShortcut::SPELLBOOK_TAB_ADVENTURE:
 			fadvSpellsb();
 			break;
+		case EShortcut::SPELLBOOK_SEARCH_FOCUS:
+			toggleSearchBoxFocus();
+			break;
 	}
 }
 

+ 1 - 0
client/windows/CSpellWindow.h

@@ -129,6 +129,7 @@ public:
 	void fexitb();
 	void fadvSpellsb();
 	void fbattleSpellsb();
+	void toggleSearchBoxFocus();
 	void fmanaPtsb();
 
 	void fLcornerb();

+ 1 - 0
config/shortcutsConfig.json

@@ -233,6 +233,7 @@
 		"spectateTrackHero":        [],
 		"spellbookTabAdventure":    "A",
 		"spellbookTabCombat":       "C",
+		"spellbookSearchFocus":     "Tab",
 		"townOpenFort":             "F",
 		"townOpenGarrisonedHero":   "Shift+H",
 		"townOpenHall":             "B",