public override void ManagedWindowSetButtonLocations (InternalWindowManager wm)
{
TitleButtons buttons = wm.TitleButtons;
Form form = wm.form;
buttons.HelpButton.Visible = form.HelpButton;
foreach (TitleButton button in buttons) {
button.Visible = false;
}
switch (form.FormBorderStyle) {
case FormBorderStyle.None:
if (form.WindowState != FormWindowState.Normal)
goto case FormBorderStyle.Sizable;
break;
case FormBorderStyle.FixedToolWindow:
case FormBorderStyle.SizableToolWindow:
buttons.CloseButton.Visible = true;
if (form.WindowState != FormWindowState.Normal)
goto case FormBorderStyle.Sizable;
break;
case FormBorderStyle.FixedSingle:
case FormBorderStyle.Fixed3D:
case FormBorderStyle.FixedDialog:
case FormBorderStyle.Sizable:
switch (form.WindowState) {
case FormWindowState.Normal:
buttons.MinimizeButton.Visible = true;
buttons.MaximizeButton.Visible = true;
buttons.RestoreButton.Visible = false;
break;
case FormWindowState.Maximized:
buttons.MinimizeButton.Visible = true;
buttons.MaximizeButton.Visible = false;
buttons.RestoreButton.Visible = true;
break;
case FormWindowState.Minimized:
buttons.MinimizeButton.Visible = false;
buttons.MaximizeButton.Visible = true;
buttons.RestoreButton.Visible = true;
break;
}
buttons.CloseButton.Visible = true;
break;
}
// Respect MinimizeBox/MaximizeBox
if (form.MinimizeBox == false && form.MaximizeBox == false) {
buttons.MinimizeButton.Visible = false;
buttons.MaximizeButton.Visible = false;
} else if (form.MinimizeBox == false)
buttons.MinimizeButton.State = ButtonState.Inactive;
else if (form.MaximizeBox == false)
buttons.MaximizeButton.State = ButtonState.Inactive;
int bw = ManagedWindowBorderWidth (wm);
Size btsize = ManagedWindowButtonSize (wm);
int btw = btsize.Width;
int bth = btsize.Height;
int top = bw + 2;
int left = form.Width - bw - btw - ManagedWindowSpacingAfterLastTitleButton;
if ((!wm.IsToolWindow || wm.IsMinimized) && wm.HasBorders) {
buttons.CloseButton.Rectangle = new Rectangle (left, top, btw, bth);
left -= 2 + btw;
if (buttons.MaximizeButton.Visible) {
buttons.MaximizeButton.Rectangle = new Rectangle (left, top, btw, bth);
left -= 2 + btw;
}
if (buttons.RestoreButton.Visible) {
buttons.RestoreButton.Rectangle = new Rectangle (left, top, btw, bth);
left -= 2 + btw;
}
buttons.MinimizeButton.Rectangle = new Rectangle (left, top, btw, bth);
left -= 2 + btw;
} else if (wm.IsToolWindow) {
buttons.CloseButton.Rectangle = new Rectangle (left, top, btw, bth);
left -= 2 + btw;
}
}