#nullable enable using System.ComponentModel; namespace Terminal.Gui; /// /// Specifies the event arguments for . This is a higher-level construct than /// the wrapped class and is used for the events defined on /// and subclasses /// of View (e.g. and ). /// public class MouseEventArgs : HandledEventArgs { /// /// Flags indicating the state of the mouse buttons and the type of event that occurred. /// public MouseFlags Flags { get; set; } /// /// The screen-relative mouse position. /// public Point ScreenPosition { get; set; } /// The deepest View who's contains . public View? View { get; set; } /// /// The position of the mouse in 's Viewport-relative coordinates. Only valid if /// is set. /// public Point Position { get; set; } /// /// Gets whether contains any of the button pressed related flags. /// public bool IsPressed => Flags.HasFlag (MouseFlags.Button1Pressed) || Flags.HasFlag (MouseFlags.Button2Pressed) || Flags.HasFlag (MouseFlags.Button3Pressed) || Flags.HasFlag (MouseFlags.Button4Pressed); /// /// Gets whether contains any of the button released related flags. /// public bool IsReleased => Flags.HasFlag (MouseFlags.Button1Released) || Flags.HasFlag (MouseFlags.Button2Released) || Flags.HasFlag (MouseFlags.Button3Released) || Flags.HasFlag (MouseFlags.Button4Released); /// /// Gets whether contains any of the single-clicked related flags. /// public bool IsSingleClicked => Flags.HasFlag (MouseFlags.Button1Clicked) || Flags.HasFlag (MouseFlags.Button2Clicked) || Flags.HasFlag (MouseFlags.Button3Clicked) || Flags.HasFlag (MouseFlags.Button4Clicked); /// /// Gets whether contains any of the double-clicked related flags. /// public bool IsDoubleClicked => Flags.HasFlag (MouseFlags.Button1DoubleClicked) || Flags.HasFlag (MouseFlags.Button2DoubleClicked) || Flags.HasFlag (MouseFlags.Button3DoubleClicked) || Flags.HasFlag (MouseFlags.Button4DoubleClicked); /// /// Gets whether contains any of the triple-clicked related flags. /// public bool IsTripleClicked => Flags.HasFlag (MouseFlags.Button1TripleClicked) || Flags.HasFlag (MouseFlags.Button2TripleClicked) || Flags.HasFlag (MouseFlags.Button3TripleClicked) || Flags.HasFlag (MouseFlags.Button4TripleClicked); /// /// Gets whether contains any of the mouse button clicked related flags. /// public bool IsSingleDoubleOrTripleClicked => Flags.HasFlag (MouseFlags.Button1Clicked) || Flags.HasFlag (MouseFlags.Button2Clicked) || Flags.HasFlag (MouseFlags.Button3Clicked) || Flags.HasFlag (MouseFlags.Button4Clicked) || Flags.HasFlag (MouseFlags.Button1DoubleClicked) || Flags.HasFlag (MouseFlags.Button2DoubleClicked) || Flags.HasFlag (MouseFlags.Button3DoubleClicked) || Flags.HasFlag (MouseFlags.Button4DoubleClicked) || Flags.HasFlag (MouseFlags.Button1TripleClicked) || Flags.HasFlag (MouseFlags.Button2TripleClicked) || Flags.HasFlag (MouseFlags.Button3TripleClicked) || Flags.HasFlag (MouseFlags.Button4TripleClicked); /// /// Gets whether contains any of the mouse wheel related flags. /// public bool IsWheel => Flags.HasFlag (MouseFlags.WheeledDown) || Flags.HasFlag (MouseFlags.WheeledUp) || Flags.HasFlag (MouseFlags.WheeledLeft) || Flags.HasFlag (MouseFlags.WheeledRight); /// Returns a that represents the current . /// A that represents the current . public override string ToString () { return $"({ScreenPosition}):{Flags}:{View?.Id}:{Position}"; } }