tasks/init/enyo/root/enyo/source/kernel/UiComponent.js
function(inMessage, inPayload, inSender) {
		// Note: Controls will generally be both in a $ hash and a child list somewhere.
		// Attempt to avoid duplicated messages by sending only to components that are not
		// UiComponent, as those components are guaranteed not to be in a child list.
		// May cause a problem if there is a scenario where a UiComponent owns a pure 
		// Component that in turn owns Controls.
		//
		// waterfall to all pure components
		for (var n in this.$) {
			if (!(this.$[n] instanceof enyo.UiComponent)) {
				this.$[n].waterfall(inMessage, inPayload, inSender);
			}
		}
		// waterfall to my children
		for (var i=0, cs=this.children, c; c=cs[i]; i++) {
			// Do not send {showingOnly: true} events to hidden controls. This flag is set for resize events 
			// which are broadcast from within the framework. This saves a *lot* of unnecessary layout.
			// TODO: Maybe remember that we did this, and re-send those messages on setShowing(true)? 
			// No obvious problems with it as-is, though
			if (c.showing || !(inPayload && inPayload.showingOnly)) {
				c.waterfall(inMessage, inPayload, inSender);
			}
		}
	}
function(inMessage, inPayload, inSender) {
		// Note: Controls will generally be both in a $ hash and a child list somewhere.
		// Attempt to avoid duplicated messages by sending only to components that are not
		// UiComponent, as those components are guaranteed not to be in a child list.
		// May cause a problem if there is a scenario where a UiComponent owns a pure 
		// Component that in turn owns Controls.
		//
		// waterfall to all pure components
		for (var n in this.$) {
			if (!(this.$[n] instanceof enyo.UiComponent)) {
				this.$[n].waterfall(inMessage, inPayload, inSender);
			}
		}
		// waterfall to my children
		for (var i=0, cs=this.children, c; c=cs[i]; i++) {
			// Do not send {showingOnly: true} events to hidden controls. This flag is set for resize events 
			// which are broadcast from within the framework. This saves a *lot* of unnecessary layout.
			// TODO: Maybe remember that we did this, and re-send those messages on setShowing(true)? 
			// No obvious problems with it as-is, though
			if (c.showing || !(inPayload && inPayload.showingOnly)) {
				c.waterfall(inMessage, inPayload, inSender);
			}
		}
	}
function ( inMessage , inPayload , inSender ) { // Note: Controls will generally be both in a $ hash and a child list somewhere. // Attempt to avoid duplicated messages by sending only to components that are not // UiComponent, as those components are guaranteed not to be in a child list. // May cause a problem if there is a scenario where a UiComponent owns a pure  // Component that in turn owns Controls. // // waterfall to all pure components for ( var n in this . $ ) { if ( ! ( this . $ [ n ] instanceof enyo . UiComponent ) ) { this . $ [ n ] . waterfall ( inMessage , inPayload , inSender ) ; } } // waterfall to my children for ( var i = 0 , cs = this . children , c ; c = cs [ i ] ; i ++ ) { // Do not send {showingOnly: true} events to hidden controls. This flag is set for resize events  // which are broadcast from within the framework. This saves a *lot* of unnecessary layout. // TODO: Maybe remember that we did this, and re-send those messages on setShowing(true)?  // No obvious problems with it as-is, though if ( c . showing || ! ( inPayload && inPayload . showingOnly ) ) { c . waterfall ( inMessage , inPayload , inSender ) ; } } }
Sends a message to all my descendents.
Sends a message to all my descendents .