mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 17:56:51 +13:00
Confirm/Cancel button positioning logic for Cut Out tool
This commit is contained in:
parent
d5f522ab80
commit
8b0c5d0d66
1 changed files with 45 additions and 11 deletions
|
@ -52,21 +52,55 @@ public override void OnUpdate()
|
||||||
|
|
||||||
if (confirmButton != null && cancelButton != null)
|
if (confirmButton != null && cancelButton != null)
|
||||||
{
|
{
|
||||||
if (Rectangle.Bottom + buttonOffset + buttonSize.Height > Manager.Form.ClientArea.Bottom &&
|
if (IsVerticalTrim)
|
||||||
Rectangle.Width > (buttonSize.Width * 2) + (buttonOffset * 3) &&
|
|
||||||
Rectangle.Height > buttonSize.Height + (buttonOffset * 2))
|
|
||||||
{
|
{
|
||||||
confirmButton.Rectangle = new RectangleF(Rectangle.Right - (buttonOffset * 2) - (buttonSize.Width * 2),
|
float spaceBelow = Manager.Form.ClientArea.Bottom - Rectangle.Bottom;
|
||||||
Rectangle.Bottom - buttonOffset - buttonSize.Height, buttonSize.Width, buttonSize.Height);
|
bool positionBelow = spaceBelow >= buttonSize.Height + 2 * buttonOffset;
|
||||||
cancelButton.Rectangle = new RectangleF(Rectangle.Right - buttonOffset - buttonSize.Width,
|
float buttonsTop = positionBelow ? Rectangle.Bottom + buttonOffset : Rectangle.Top - buttonOffset - buttonSize.Height;
|
||||||
Rectangle.Bottom - buttonOffset - buttonSize.Height, buttonSize.Width, buttonSize.Height);
|
float buttonsLeft = Rectangle.Left + Rectangle.Width / 2 - (2 * buttonSize.Width + buttonOffset) / 2;
|
||||||
|
float buttonsRight = buttonsLeft + 2 * buttonSize.Width + buttonOffset;
|
||||||
|
bool overflowsLeft = buttonsLeft < Manager.Form.ClientArea.Left + buttonOffset;
|
||||||
|
bool overflowsRight = buttonsRight >= Manager.Form.ClientArea.Right - buttonOffset;
|
||||||
|
if (overflowsLeft && overflowsRight)
|
||||||
|
{
|
||||||
|
// can't fix
|
||||||
|
}
|
||||||
|
else if (overflowsLeft)
|
||||||
|
{
|
||||||
|
buttonsLeft = Manager.Form.ClientArea.Left + buttonOffset;
|
||||||
|
}
|
||||||
|
else if (overflowsRight)
|
||||||
|
{
|
||||||
|
buttonsRight = Manager.Form.ClientArea.Right - buttonOffset;
|
||||||
|
buttonsLeft = buttonsRight - 2 * buttonSize.Width - buttonOffset;
|
||||||
|
}
|
||||||
|
confirmButton.Rectangle = new RectangleF(buttonsLeft, buttonsTop, buttonSize.Width, buttonSize.Height);
|
||||||
|
cancelButton.Rectangle = confirmButton.Rectangle.LocationOffset(buttonSize.Width + buttonOffset, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
confirmButton.Rectangle = new RectangleF(Rectangle.Right - (buttonSize.Width * 2) - buttonOffset,
|
float spaceRight = Manager.Form.ClientArea.Right - Rectangle.Right;
|
||||||
Rectangle.Bottom + buttonOffset, buttonSize.Width, buttonSize.Height);
|
bool positionRight = spaceRight >= buttonSize.Width + 2 * buttonOffset;
|
||||||
cancelButton.Rectangle = new RectangleF(Rectangle.Right - buttonSize.Width,
|
float buttonsLeft = positionRight ? Rectangle.Right + buttonOffset : Rectangle.Left - buttonOffset - buttonSize.Width;
|
||||||
Rectangle.Bottom + buttonOffset, buttonSize.Width, buttonSize.Height);
|
float buttonsTop = Rectangle.Top + Rectangle.Height / 2 - (2 * buttonSize.Height + buttonOffset) / 2;
|
||||||
|
float buttonsBottom = buttonsTop + 2 * buttonSize.Height + buttonOffset;
|
||||||
|
bool overflowsTop = buttonsTop < Manager.Form.ClientArea.Top + buttonOffset;
|
||||||
|
bool overflowsBottom = buttonsBottom >= Manager.Form.ClientArea.Bottom - buttonOffset;
|
||||||
|
if (overflowsTop && overflowsBottom)
|
||||||
|
{
|
||||||
|
// can't fix
|
||||||
|
}
|
||||||
|
else if (overflowsTop)
|
||||||
|
{
|
||||||
|
buttonsTop = Manager.Form.ClientArea.Top + buttonOffset;
|
||||||
|
}
|
||||||
|
else if (overflowsBottom)
|
||||||
|
{
|
||||||
|
buttonsBottom = Manager.Form.ClientArea.Bottom - buttonOffset;
|
||||||
|
buttonsTop = buttonsBottom - 2 * buttonSize.Height - buttonOffset;
|
||||||
|
}
|
||||||
|
confirmButton.Rectangle = new RectangleF(buttonsLeft, buttonsTop, buttonSize.Width, buttonSize.Height);
|
||||||
|
cancelButton.Rectangle = confirmButton.Rectangle.LocationOffset(0, buttonSize.Height + buttonOffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue