internal void ChangingParent (Control new_parent)
{
if (IsMdiChild) {
return;
}
bool recreate_necessary = false;
if (new_parent == null) {
window_manager = null;
} else if (new_parent is MdiClient) {
window_manager = new MdiWindowManager (this, (MdiClient) new_parent);
} else {
window_manager = new FormWindowManager (this);
recreate_necessary = true;
}
if (recreate_necessary) {
if (IsHandleCreated) {
if (new_parent != null && new_parent.IsHandleCreated) {
RecreateHandle ();
} else {
DestroyHandle ();
}
}
} else {
if (IsHandleCreated) {
IntPtr new_handle = IntPtr.Zero;
if (new_parent != null && new_parent.IsHandleCreated) {
new_handle = new_parent.Handle;
}
XplatUI.SetParent (Handle, new_handle);
}
}
if (window_manager != null) {
window_manager.UpdateWindowState (window_state, window_state, true);
}
}