diff --git a/library/Core.cpp b/library/Core.cpp index 1f2f6e159..536ab3f20 100644 --- a/library/Core.cpp +++ b/library/Core.cpp @@ -2422,10 +2422,8 @@ bool Core::SelectHotkey(int sym, int modifiers) if (!binding.focus.empty()) { bool found = false; std::vector focusStrings = Gui::getFocusStrings(Core::getTopViewscreen()); - for (std::string focusString : focusStrings) { - if (prefix_matches(binding.focus, focusString)) { - found = true; - } + if(Gui::matchFocusString(binding.focus)) { + found = true; } if (!found) { diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 3529d0d87..d3615f17d 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -481,7 +481,7 @@ bool Gui::matchFocusString(std::string focusString, bool prefixMatch) { std::vector currentFocusStrings = getFocusStrings(getCurViewscreen(true)); return std::find_if(currentFocusStrings.begin(), currentFocusStrings.end(), [&focusString, &prefixMatch](std::string item) { - return prefixMatch ? toLower(item).rfind(focusString, 0) == 0 : focusString == toLower(item); + return prefixMatch ? prefix_matches(focusString, toLower(item)) : focusString == toLower(item); }) != currentFocusStrings.end(); } diff --git a/plugins/hotkeys.cpp b/plugins/hotkeys.cpp index 133325cce..324a972b5 100644 --- a/plugins/hotkeys.cpp +++ b/plugins/hotkeys.cpp @@ -109,11 +109,9 @@ static void find_active_keybindings(df::viewscreen *screen, bool filtermenu) { vector tokens; split_string(&tokens, *invoke_cmd, ":"); string focus = tokens[0].substr(1); - for(string focusString : focusStrings) { - if (prefix_matches(toLower(focus), toLower(focusString))) { - auto cmdline = trim(tokens[1]); - add_binding_if_valid(sym, cmdline, screen, filtermenu); - } + if(Gui::matchFocusString(focus)) { + auto cmdline = trim(tokens[1]); + add_binding_if_valid(sym, cmdline, screen, filtermenu); } } }