Enforcing that DependencyNode::affects() can only be passed leaf plugs, and that it can only return leaf plugs in the output. Dirtiness is still signalled on parent CompoundPlugs as a convenience to observers, but the actual specification of dependencies is enforced to only take place at the leaf level because that is the only level computations may take place at. This fixes bugs where the various UI elements wouldn't always update correctly because dirtiness wasn't being propagated fully. These bugs had become much more severe following the addition of the preprocessor node inside the SceneView because the preprocessor itself wasn't properly propagating dirtiness.
Preventing duplicate updates of the PathListingWidget in the event that the path is changed multiple times in between draw events. This was particularly important for the SceneHierarchy editor which was performing repeated updates due to multiple plugDirtiedSignals() being emitted. Path changed signals are now batched up and dealt with once only on the next idle event after the change.
Updating changes file.