Skip to content

Commit

Permalink
#5791: Clear the ResourceTreeView filter when programmatically settin…
Browse files Browse the repository at this point in the history
…g the selection.

ResourceTreeView class is now communicating the filter text cleared event to any event handlers. The ResourceTreeViewToolbar will react to that event.
  • Loading branch information
codereader committed Oct 29, 2021
1 parent 6160dc4 commit ebafb24
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 0 deletions.
6 changes: 6 additions & 0 deletions libs/wxutil/dataview/ResourceTreeView.cpp
Expand Up @@ -32,6 +32,7 @@ wxEvent* ResourceTreeView::PopulationFinishedEvent::Clone() const
}

wxDEFINE_EVENT(EV_TREEVIEW_POPULATION_FINISHED, ResourceTreeView::PopulationFinishedEvent);
wxDEFINE_EVENT(EV_TREEVIEW_FILTERTEXT_CLEARED, wxCommandEvent);

ResourceTreeView::ResourceTreeView(wxWindow* parent, const ResourceTreeView::Columns& columns, long style) :
ResourceTreeView(parent, TreeModel::Ptr(), columns, style)
Expand Down Expand Up @@ -297,6 +298,8 @@ void ResourceTreeView::ClearFilterText()
_filterText.clear();

UpdateTreeVisibility();

wxQueueEvent(this, new wxCommandEvent(EV_TREEVIEW_FILTERTEXT_CLEARED));
}

std::string ResourceTreeView::GetSelectedFullname()
Expand Down Expand Up @@ -343,6 +346,9 @@ void ResourceTreeView::SetSelectedElement(const std::string& value, const TreeMo
return;
}

// Clear the filter before seeking an element
ClearFilterText();

// Find the requested element
auto item = GetTreeModel()->FindString(value, column);

Expand Down
2 changes: 2 additions & 0 deletions libs/wxutil/dataview/ResourceTreeView.h
Expand Up @@ -197,5 +197,7 @@ class ResourceTreeView :

// Emitted when the tree view is done populating
wxDECLARE_EVENT(EV_TREEVIEW_POPULATION_FINISHED, ResourceTreeView::PopulationFinishedEvent);
// Emitted when the tree view cleared its filter text on its own
wxDECLARE_EVENT(EV_TREEVIEW_FILTERTEXT_CLEARED, wxCommandEvent);

}
13 changes: 13 additions & 0 deletions libs/wxutil/dataview/ResourceTreeViewToolbar.cpp
Expand Up @@ -95,6 +95,12 @@ void ResourceTreeViewToolbar::EnableFavouriteManagement(bool enable)
void ResourceTreeViewToolbar::AssociateToTreeView(ResourceTreeView* treeView)
{
_treeView = treeView;

if (_treeView != nullptr)
{
_treeView->Bind(EV_TREEVIEW_FILTERTEXT_CLEARED, &ResourceTreeViewToolbar::_onTreeViewFilterTextCleared, this);
}

UpdateFromTreeView();
}

Expand Down Expand Up @@ -188,6 +194,13 @@ void ResourceTreeViewToolbar::_onFilterButtonToggled(wxCommandEvent& ev)
HandleFilterEntryChanged();
}

void ResourceTreeViewToolbar::_onTreeViewFilterTextCleared(wxCommandEvent& ev)
{
// Tree view cleared the filter, clear our entry box
_filterEntry->Clear();
ev.Skip();
}

void ResourceTreeViewToolbar::UpdateFromTreeView()
{
if (_treeView == nullptr) return;
Expand Down
1 change: 1 addition & 0 deletions libs/wxutil/dataview/ResourceTreeViewToolbar.h
Expand Up @@ -51,6 +51,7 @@ class ResourceTreeViewToolbar :
void _onEntryChar(wxKeyEvent& ev);
void _onEntryText(wxCommandEvent& ev);
void _onFilterButtonToggled(wxCommandEvent& ev);
void _onTreeViewFilterTextCleared(wxCommandEvent& ev);

void HandleFilterEntryChanged();
void UpdateFromTreeView();
Expand Down

0 comments on commit ebafb24

Please sign in to comment.