Checking a parent usually selects all of its children
Aliases: check-down · cascade check · select whole branch
What it is
In a tree multi-select, the default meaning of ticking a parent is “this whole branch joins”: every visible child, and descendants not yet expanded, become selected. That is check-down. Ticking “East China” is granting or exporting a whole branch, not putting an empty folder named East China into the set. Unticking the parent drops the whole branch. Without check-down the parent box is just another item, and the hierarchy no longer saves leaf-by-leaf ticking.
“Usually” leaves a door: when the parent is itself a selectable object, coupling may be switched off or rewritten — another leaf’s job. The default remains parent-ticks-children.
Why it happens
A tree organises a set into foldable branches. People treat the branch name as a handle on that set: grab the handle, grab the bundle. Check-down implements the handle. Expansion must not change the result — collapsed descendants still have to be written, or “tick the folded parent” leaves a truncated selection people believe is the whole bundle. Untick likewise goes down, so a vacant parent cannot leave children behind and make the summary lie again.
Coupling is a set operation, not an animation. One parent tick on a deep tree may rewrite thousands of leaves; the UI must finish the semantics in one action, then deal with paint. Semantics before paint: even if child rows are not drawn yet, they are selected in the model.
Where it stops holding
In a permission model where “folder” and “file” are different objects, ticking a folder should not automatically equal ticking files — default coupling is then too wide and must be switchable. When a filter shows only some children, whether a parent tick means the whole branch or only the visible subset must be stated; silently ticking the visible subset shocks people after the filter clears. Disabled children must not be forced on by coupling; leave mixed and say who was skipped. On a paged or virtualized tree, unmounted nodes still have to be coupled in the model; not rendered is not not selected.
Applying it
- Default: a parent tick writes the whole descendant branch; a parent untick clears it; folding does not change that semantics.
- Preview beside the parent how many children will be affected.
- State the scope under filter and disable; do not silently shrink.
- How to check: fold a tree that contains collapsed descendants, tick the parent, expand, and export selected ids. Missing an unexpanded leaf means check-down only hit the rows that were painted.
Related
- Within the group: E3.16.2 A parent must show mixed when only some children are selected · E3.16.3 Coupling must stay responsive in a deep tree · E3.16.4 Users must be able to select a parent itself with no children
- Adjacent: E3.12 Tri-State and Indeterminate · E4.06 Tree Controls
- Search terms:
check-down·select all children·tree cascade select