protected override void SetVisibleCore(bool value)
{
if (value)
close_raised = false;
if (IsMdiChild && !MdiParent.Visible) {
if (value != Visible) {
MdiWindowManager wm = (MdiWindowManager) window_manager;
wm.IsVisiblePending = value;
OnVisibleChanged (EventArgs.Empty);
return;
}
} else {
is_changing_visible_state++;
has_been_visible = value || has_been_visible;
base.SetVisibleCore (value);
if (value) {
Application.AddForm (this);
}
if (value && WindowState != FormWindowState.Normal)
XplatUI.SendMessage (Handle, Msg.WM_SHOWWINDOW, (IntPtr)1, IntPtr.Zero);
is_changing_visible_state--;
}
if (value && IsMdiContainer) {
Form [] children = MdiChildren;
for (int i = 0; i < children.Length; i++) {
Form child = children [i];
MdiWindowManager wm = (MdiWindowManager) child.window_manager;
if (!child.IsHandleCreated && wm.IsVisiblePending) {
wm.IsVisiblePending = false;
child.Visible = true;
}
}
}
if (value && IsMdiChild){
PerformLayout ();
ThemeEngine.Current.ManagedWindowSetButtonLocations (window_manager);
}
// Shown event is only called once, the first time the form is made visible
if (value && !shown_raised) {
this.OnShown (EventArgs.Empty);
shown_raised = true;
}
if (value && !IsMdiChild) {
if (ActiveControl == null)
SelectNextControl (null, true, true, true, false);
if (ActiveControl != null)
SendControlFocus (ActiveControl);
else
this.Focus ();
}
}