GTreeView was forgetting to call to base in did_update_selection(). This prevented GAbstractView from firing the on_selection hook and we ended up with only the on_selection_change hook firing.
@@ -248,6 +248,7 @@ void GTreeView::did_update_model()
void GTreeView::did_update_selection()
{
+ GAbstractView::did_update_selection();
ASSERT(model());
auto index = selection().first();
if (!index.is_valid())