internal override bool SetVisible (IntPtr handle, bool visible, bool activate)
{
Hwnd hwnd;
hwnd = Hwnd.ObjectFromHandle(handle);
hwnd.visible = visible;
lock (XlibLock) {
if (visible) {
MapWindow(hwnd, WindowType.Both);
if (Control.FromHandle(handle) is Form) {
FormWindowState s;
s = ((Form)Control.FromHandle(handle)).WindowState;
switch(s) {
case FormWindowState.Minimized: SetWindowState(handle, FormWindowState.Minimized); break;
case FormWindowState.Maximized: SetWindowState(handle, FormWindowState.Maximized); break;
}
}
SendMessage(handle, Msg.WM_WINDOWPOSCHANGED, IntPtr.Zero, IntPtr.Zero);
}
else {
UnmapWindow(hwnd, WindowType.Both);
}
}
return true;
}