Skip to content

Commit

Permalink
#6021: Allow set/unset favourites to operate non-recursively if desired
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Jul 24, 2022
1 parent 36edf34 commit a6bd7a2
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
20 changes: 19 additions & 1 deletion libs/wxutil/dataview/ResourceTreeView.cpp
Expand Up @@ -45,6 +45,7 @@ ResourceTreeView::ResourceTreeView(wxWindow* parent, const TreeModel::Ptr& model
_mode(TreeMode::ShowAll),
_expandTopLevelItemsAfterPopulation(false),
_columnToSelectAfterPopulation(nullptr),
_setFavouritesRecursively(true),
_declPathColumn(_columns.fullName)
{
_treeStore = model;
Expand Down Expand Up @@ -506,6 +507,11 @@ void ResourceTreeView::SetFavouriteRecursively(TreeModel::Row& row, bool isFavou
}

// Not a folder, set the desired status on this item
SetFavourite(row, isFavourite);
}

void ResourceTreeView::SetFavourite(TreeModel::Row& row, bool isFavourite)
{
row[_columns.isFavourite] = isFavourite;
row[_columns.iconAndName] = TreeViewItemStyle::Declaration(isFavourite);

Expand All @@ -531,7 +537,19 @@ void ResourceTreeView::_onSetFavourite(bool isFavourite)
// Grab this item and enter recursion, propagating the favourite status
TreeModel::Row row(item, *GetModel());

SetFavouriteRecursively(row, isFavourite);
if (_setFavouritesRecursively)
{
SetFavouriteRecursively(row, isFavourite);
}
else
{
SetFavourite(row, isFavourite);
}
}

void ResourceTreeView::EnableSetFavouritesRecursively(bool enabled)
{
_setFavouritesRecursively = enabled;
}

std::string ResourceTreeView::GetResourcePath(const TreeModel::Row& row)
Expand Down
5 changes: 5 additions & 0 deletions libs/wxutil/dataview/ResourceTreeView.h
Expand Up @@ -89,6 +89,7 @@ class ResourceTreeView :

// Typename used to store favourites. Favourites disabled if empty.
std::string _favouriteTypeName;
bool _setFavouritesRecursively;

wxString _filterText;

Expand Down Expand Up @@ -136,6 +137,9 @@ class ResourceTreeView :
// Disable favourite management features
virtual void DisableFavouriteManagement();

// Whether add/remove favourites is operating recursively
virtual void EnableSetFavouritesRecursively(bool enabled);

virtual bool IsDirectorySelected();
virtual bool IsFavouriteSelected();

Expand All @@ -157,6 +161,7 @@ class ResourceTreeView :
protected:
virtual void PopulateContextMenu(wxutil::PopupMenu& popupMenu);

virtual void SetFavourite(TreeModel::Row& row, bool isFavourite);
virtual void SetFavouriteRecursively(TreeModel::Row& row, bool isFavourite);

virtual void SetupTreeModelFilter();
Expand Down

0 comments on commit a6bd7a2

Please sign in to comment.