// Set the focus widget to a specific child. internal void SetFocus(InputOnlyWidget widget) { if(!hasPrimaryFocus) { focusWidget = widget; } else if(focusWidget != widget) { InputOnlyWidget oldFocus = focusWidget; focusWidget = widget; oldFocus.DispatchFocusOut(widget); if(focusWidget == widget) { widget.DispatchFocusIn(oldFocus); } } }
// Detect that this top-level window has gained the primary focus. private void PrimaryFocusIn() { if(!hasPrimaryFocus) { hasPrimaryFocus = true; OnPrimaryFocusIn(); if(defaultFocus != null) { focusWidget = defaultFocus; focusWidget.DispatchFocusIn(null); } else if(focusWidget != null) { focusWidget.DispatchFocusIn(null); } } }