Adornment code cleanup

This commit is contained in:
Tig Kindel
2024-03-04 10:44:01 -07:00
parent 916c0c6fdd
commit 7b90f313a0

View File

@@ -5,7 +5,7 @@
// QUESTION: How does a user navigate out of an Adornment to another Adornment, or back into the Parent's SubViews?
/// <summary>
/// Adornments are a special form of <see cref="View"/> that appear outside of the <see cref="View.Bounds"/>:
/// Adornments are a special form of <see cref="View"/> that appear outside the <see cref="View.Bounds"/>:
/// <see cref="Margin"/>, <see cref="Border"/>, and <see cref="Padding"/>. They are defined using the
/// <see cref="Thickness"/> class, which specifies the thickness of the sides of a rectangle.
/// </summary>
@@ -18,7 +18,8 @@
/// </remarsk>
public class Adornment : View
{
internal static Point? _dragPosition;
// BUGBUG: This should not be static! It should be a property of the Application class.
private Point? _dragPosition;
private Point _startGrabPoint;
private Thickness _thickness = Thickness.Empty;
@@ -177,15 +178,15 @@ public class Adornment : View
/// <summary>Called when a mouse event occurs within the Adornment.</summary>
/// <remarks>
/// <para>
/// The coordinates are relative to <see cref="View.Bounds"/>.
/// </para>
/// <para>
/// A mouse click on the Adornment will cause the Parent to focus.
/// </para>
/// <para>
/// A mouse drag on the Adornment will cause the Parent to move.
/// </para>
/// <para>
/// The coordinates are relative to <see cref="View.Bounds"/>.
/// </para>
/// <para>
/// A mouse click on the Adornment will cause the Parent to focus.
/// </para>
/// <para>
/// A mouse drag on the Adornment will cause the Parent to move.
/// </para>
/// </remarks>
/// <param name="mouseEvent"></param>
/// <returns><see langword="true"/>, if the event was handled, <see langword="false"/> otherwise.</returns>
@@ -212,7 +213,8 @@ public class Adornment : View
int nx, ny;
if (!_dragPosition.HasValue && (mouseEvent.Flags.HasFlag (MouseFlags.Button1Pressed)))
// BUGBUG: This is true even when the mouse started dragging outside of the Adornment, which is not correct.
if (!_dragPosition.HasValue && mouseEvent.Flags.HasFlag (MouseFlags.Button1Pressed))
{
Parent.SetFocus ();
Application.BringOverlappedTopToFront ();
@@ -244,7 +246,8 @@ public class Adornment : View
_dragPosition = new Point (mouseEvent.X, mouseEvent.Y);
var parentLoc = Parent.SuperView?.ScreenToBounds (mouseEvent.ScreenPosition.X, mouseEvent.ScreenPosition.Y) ?? mouseEvent.ScreenPosition;
Point parentLoc = Parent.SuperView?.ScreenToBounds (mouseEvent.ScreenPosition.X, mouseEvent.ScreenPosition.Y) ?? mouseEvent.ScreenPosition;
GetLocationThatFits (
Parent,
parentLoc.X - _startGrabPoint.X,
@@ -255,10 +258,8 @@ public class Adornment : View
out _
);
Parent.X = nx;
Parent.Y = ny;
//Parent.SetNeedsDisplay ();
return true;
}