From 209d23e0ae05f75d5ca0c2c1009f3aa4dc255d9e Mon Sep 17 00:00:00 2001 From: themanyone Date: Fri, 29 Nov 2024 22:45:39 -0900 Subject: [PATCH] Fix search bar losing focus while typing (PR #13691 by @themanyone) --- src/slic3r/GUI/MainFrame.cpp | 1 - src/slic3r/GUI/Search.cpp | 9 ++++----- src/slic3r/GUI/TopBar.cpp | 4 +++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index f26335dd25..d677808180 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1650,7 +1650,6 @@ void MainFrame::init_menubar_as_editor() editMenu->AppendSeparator(); append_menu_item(editMenu, wxID_ANY, _L("Searc&h") + "\tCtrl+F", _L("Search in settings"), [this](wxCommandEvent&) { -// wxGetApp().show_search_dialog(); m_tabpanel->GetTopBarItemsCtrl()->TriggerSearch(); }, "search", nullptr, []() {return true; }, this); diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index efc397bce1..75de52ba46 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -528,13 +528,12 @@ void OptionsSearcher::edit_search_input() void OptionsSearcher::process_key_down_from_input(wxKeyEvent& e) { int key = e.GetKeyCode(); - if (key == WXK_ESCAPE) + if (key == WXK_ESCAPE) { + set_focus_to_parent(); search_dialog->Hide(); + } else if (search_dialog && (key == WXK_UP || key == WXK_DOWN || key == WXK_NUMPAD_ENTER || key == WXK_RETURN)) { search_dialog->KeyDown(e); -#ifdef __linux__ - search_dialog->SetFocus(); -#endif // __linux__ } } @@ -708,7 +707,7 @@ void SearchDialog::OnKeyDown(wxKeyEvent& event) if (key == WXK_UP || key == WXK_DOWN) { // So, for the next correct navigation, set focus on the search_list - // search_list->SetFocus(); // #ys_delete_after_test -> Looks like no need anymore + search_list->SetFocus(); auto item = search_list->GetSelection(); diff --git a/src/slic3r/GUI/TopBar.cpp b/src/slic3r/GUI/TopBar.cpp index cd1dcb2453..cb42ef2eec 100644 --- a/src/slic3r/GUI/TopBar.cpp +++ b/src/slic3r/GUI/TopBar.cpp @@ -266,8 +266,8 @@ void TopBarItemsCtrl::CreateSearch() m_search->Bind(wxEVT_KILL_FOCUS, [](wxFocusEvent& e) { - e.Skip(); wxGetApp().searcher().check_and_hide_dialog(); + e.Skip(); }); wxTextCtrl* ctrl = m_search->GetTextCtrl(); @@ -303,6 +303,8 @@ void TopBarItemsCtrl::TriggerSearch() { wxGetApp().searcher().set_search_input(m_search); wxGetApp().show_search_dialog(); + wxTextCtrl* ctrl = m_search->GetTextCtrl(); + ctrl->SetFocus(); // set focus back to search bar for typing } }