diff --git a/src/gui/set/cards_panel.cpp b/src/gui/set/cards_panel.cpp index a454a3c6..bdd6d327 100644 --- a/src/gui/set/cards_panel.cpp +++ b/src/gui/set/cards_panel.cpp @@ -219,7 +219,9 @@ void CardsPanel::initUI(wxToolBar* tb, wxMenuBar* mb) { #endif // Filter/search textbox tb->AddSeparator(); - if (!filter) filter = new FilterCtrl(tb, ID_CARD_FILTER, _LABEL_("search cards")); + assert(!filter); + filter = new FilterCtrl(tb, ID_CARD_FILTER, _LABEL_("search cards")); + filter->setFilter(filter_value); tb->AddControl(filter); tb->Realize(); // Menus @@ -236,7 +238,11 @@ void CardsPanel::destroyUI(wxToolBar* tb, wxMenuBar* mb) { tb->DeleteTool(ID_CARD_ADD); tb->DeleteTool(ID_CARD_REMOVE); tb->DeleteTool(ID_CARD_ROTATE); - tb->DeleteTool(filter->GetId()); filter = nullptr; + // remember the value in the filter control, because the card list remains filtered + // the control is destroyed by DeleteTool + filter_value = filter->getFilterString(); + tb->DeleteTool(filter->GetId()); + filter = nullptr; // HACK: hardcoded size of rest of toolbar tb->DeleteToolByPos(12); // delete separator tb->DeleteToolByPos(12); // delete separator diff --git a/src/gui/set/cards_panel.hpp b/src/gui/set/cards_panel.hpp index 310463bc..883fb1b6 100644 --- a/src/gui/set/cards_panel.hpp +++ b/src/gui/set/cards_panel.hpp @@ -82,6 +82,7 @@ class CardsPanel : public SetWindowPanel { TextCtrl* notes; HoverButton* collapse_notes; FilterCtrl* filter; + String filter_value; // value of filter, need separate variable because the control is destroyed bool notes_below_editor; /// Move the notes panel below the editor or below the card list diff --git a/src/gui/set/keywords_panel.cpp b/src/gui/set/keywords_panel.cpp index cf93d9f2..693e5999 100644 --- a/src/gui/set/keywords_panel.cpp +++ b/src/gui/set/keywords_panel.cpp @@ -135,7 +135,9 @@ void KeywordsPanel::initUI(wxToolBar* tb, wxMenuBar* mb) { tb->AddTool(ID_KEYWORD_REMOVE, _(""), load_resource_tool_image(_("keyword_del")), wxNullBitmap, wxITEM_NORMAL,_TOOLTIP_("remove keyword"),_HELP_("remove keyword")); // Filter/search textbox tb->AddSeparator(); - if (!filter) filter = new FilterCtrl(tb, ID_KEYWORD_FILTER, _LABEL_("search keywords")); + assert(!filter); + filter = new FilterCtrl(tb, ID_KEYWORD_FILTER, _LABEL_("search keywords")); + filter->setFilter(filter_value); tb->AddControl(filter); tb->Realize(); // Menus @@ -146,7 +148,10 @@ void KeywordsPanel::destroyUI(wxToolBar* tb, wxMenuBar* mb) { // Toolbar tb->DeleteTool(ID_KEYWORD_ADD); tb->DeleteTool(ID_KEYWORD_REMOVE); - tb->DeleteTool(filter->GetId()); filter = nullptr; + // remember value of filter control + filter_value = filter->getFilterString(); + tb->DeleteTool(filter->GetId()); + filter = nullptr; // HACK: hardcoded size of rest of toolbar tb->DeleteToolByPos(12); // delete separator // Menus diff --git a/src/gui/set/keywords_panel.hpp b/src/gui/set/keywords_panel.hpp index 2357516b..9d2a3891 100644 --- a/src/gui/set/keywords_panel.hpp +++ b/src/gui/set/keywords_panel.hpp @@ -72,6 +72,7 @@ class KeywordsPanel : public SetWindowPanel { wxButton* add_param; wxButton* ref_param; FilterCtrl* filter; + String filter_value; // --------------------------------------------------- : Events void onKeywordSelect(KeywordSelectEvent& ev);