public override void PropogateAction(DockingPropogateAction action, string[] uniqueNames)
{
switch (action)
{
case DockingPropogateAction.StartUpdate:
// Only the first of several 'StartUpdate' actions needs actioning
if (_updateCount++ == 0)
{
// Do not layout the floatspace until all changes have been made
FloatingWindow.FloatspaceControl.SuspendWorkspaceLayout();
// Place the obscuring control at the top of the z-order
FloatingWindow.Controls.SetChildIndex(_obscure, 0);
// Set obscuring control to take up entire client area and be made visible, this prevents
// the drawing of any control underneath it and so prevents any drawing artifacts being seen
// until the end of all operations resulting from the request action.
_obscure.SetBounds(0, 0, FloatingWindow.ClientSize.Width, FloatingWindow.ClientSize.Height);
_obscure.Visible = true;
}
break;
case DockingPropogateAction.EndUpdate:
// Only final matching 'EndUpdate' needs to reverse start action
if ((_updateCount > 0) && (_updateCount-- == 1))
{
FloatingWindow.FloatspaceControl.ResumeWorkspaceLayout();
_obscure.Visible = false;
}
break;
default:
// Let base class perform actual requested actions
base.PropogateAction(action, uniqueNames);
break;
}
}