TreeView, when holding down shift fold/unfold all childs further down in the tree on the same level

I would like to be able to hold down the Shift key to fold multiple items at the same time.
This is especially nice if your TreeView contains a lot of items.

In other applications they choose to fold the other items on the same level (same parent), but only further down the tree.

I tried responding to the itemOpennessChanged of TreeViewItems, but the itemOpennessChanged does not tell from what action the change of fold state that came. So i can’t reliably choose the moment to fold the other items.

Adding a std::function to the TreeView that is called when folding an Item would probably be a solution.