private void Resize_Stick( Rectangle toRect, bool bInsideStick )
{
if ( formRect.Right >= (toRect.Left - stickGap) && formRect.Left <= (toRect.Right + stickGap) )
{
if ( (resizeDirection & ResizeDir.Top) == ResizeDir.Top )
{
if ( Math.Abs(formRect.Top - toRect.Bottom) <= Math.Abs(formOffsetRect.Top) && bInsideStick )
formOffsetRect.Y = formRect.Top - toRect.Bottom; // snap top to bottom
else if (Math.Abs(formRect.Top - toRect.Top) <= Math.Abs(formOffsetRect.Top) )
formOffsetRect.Y = formRect.Top - toRect.Top; // snap top to top
}
if ( (resizeDirection & ResizeDir.Bottom) == ResizeDir.Bottom )
{
if (Math.Abs(formRect.Bottom - toRect.Top) <= Math.Abs(formOffsetRect.Bottom) && bInsideStick)
formOffsetRect.Height = toRect.Top - formRect.Bottom; // snap Bottom to top
else if (Math.Abs(formRect.Bottom - toRect.Bottom) <= Math.Abs(formOffsetRect.Bottom) )
formOffsetRect.Height = toRect.Bottom - formRect.Bottom; // snap bottom to bottom
}
}
if ( formRect.Bottom >= (toRect.Top - stickGap) && formRect.Top <= (toRect.Bottom + stickGap) )
{
if ( (resizeDirection & ResizeDir.Right) == ResizeDir.Right )
{
if ( Math.Abs(formRect.Right - toRect.Left) <= Math.Abs(formOffsetRect.Right) && bInsideStick )
formOffsetRect.Width = toRect.Left - formRect.Right; // Stick right to left
else if ( Math.Abs(formRect.Right - toRect.Right) <= Math.Abs(formOffsetRect.Right))
formOffsetRect.Width = toRect.Right - formRect.Right; // Stick right to right
}
if ( (resizeDirection & ResizeDir.Left) == ResizeDir.Left )
{
if ( Math.Abs(formRect.Left - toRect.Right) <= Math.Abs(formOffsetRect.Left) && bInsideStick )
formOffsetRect.X = formRect.Left - toRect.Right; // Stick left to right
else if ( Math.Abs(formRect.Left - toRect.Left) <= Math.Abs(formOffsetRect.Left))
formOffsetRect.X = formRect.Left - toRect.Left; // Stick left to left
}
}
}