private void OnChildrenChanged(Accessible sender, string detail, int n, Accessible child)
{
bool added = (detail == "add");
if (added && child == null)
return;
if (!added && this is Desktop) {
if (child != null)
Registry.Instance.RemoveApplication (child.application.name);
}
else if (children is List<Accessible>) {
if (added) {
if (!(this is Desktop)) {
try {
children.Insert (n, child);
} catch (Exception) {
RefreshChildren ();
}
}
}
else if (child != null)
children.Remove (child);
else if (n >= 0 && n < children.Count)
children.RemoveAt (n);
}
if (added)
Desktop.RaiseChildAdded (this, child);
else
Desktop.RaiseChildRemoved (this, child);
}