protected override Size MeasureOverride(Size availableSize) { // Remove windows foreach (var dockItem in RemoveQueue) { Controller.DetachWindow(dockItem); } // Add windows foreach (var dockItem in AddQueue) { Controller.AttachWindow(dockItem); } // Update windows foreach (var dockItem in UpdateQueue) { Controller.UpdateWindow(dockItem); } Controller.ArrangeWindows(); AddQueue.Clear(); RemoveQueue.Clear(); UpdateQueue.Clear(); return(base.MeasureOverride(availableSize)); }
public void Process() { if (ToBeCleared) { Clear(); AddQueue.Clear(); RemoveQueue.Clear(); return; } while (AddQueue.Count > 0) { ProcessAdd(AddQueue.Dequeue()); } while (RemoveQueue.Count > 0) { base.Remove(RemoveQueue.Dequeue()); } return; }