using System;
namespace Terminal.Gui;
public partial class View {
///
/// Gets or sets a value indicating whether this wants mouse position reports.
///
/// if want mouse position reports; otherwise, .
public virtual bool WantMousePositionReports { get; set; }
///
/// Gets or sets a value indicating whether this want continuous button pressed event.
///
public virtual bool WantContinuousButtonPressed { get; set; }
///
/// Event fired when the view receives the mouse event for the first time.
///
public event EventHandler MouseEnter;
///
/// Event fired when the view receives a mouse event for the last time.
///
public event EventHandler MouseLeave;
///
/// Event fired when a mouse event is generated.
///
public event EventHandler MouseClick;
///
public override bool OnMouseEnter (MouseEvent mouseEvent)
{
if (!Enabled) {
return true;
}
if (!CanBeVisible (this)) {
return false;
}
var args = new MouseEventEventArgs (mouseEvent);
MouseEnter?.Invoke (this, args);
return args.Handled || base.OnMouseEnter (mouseEvent);
}
///
public override bool OnMouseLeave (MouseEvent mouseEvent)
{
if (!Enabled) {
return true;
}
if (!CanBeVisible (this)) {
return false;
}
var args = new MouseEventEventArgs (mouseEvent);
MouseLeave?.Invoke (this, args);
return args.Handled || base.OnMouseLeave (mouseEvent);
}
///
/// Method invoked when a mouse event is generated
///
///
/// , if the event was handled, otherwise.
public virtual bool OnMouseEvent (MouseEvent mouseEvent)
{
if (!Enabled) {
return true;
}
if (!CanBeVisible (this)) {
return false;
}
var args = new MouseEventEventArgs (mouseEvent);
if (MouseEvent (mouseEvent)) {
return true;
}
if (mouseEvent.Flags == MouseFlags.Button1Clicked) {
if (CanFocus && !HasFocus && SuperView != null) {
SuperView.SetFocus (this);
SetNeedsDisplay ();
}
return OnMouseClick (args);
}
if (mouseEvent.Flags == MouseFlags.Button2Clicked) {
return OnMouseClick (args);
}
if (mouseEvent.Flags == MouseFlags.Button3Clicked) {
return OnMouseClick (args);
}
if (mouseEvent.Flags == MouseFlags.Button4Clicked) {
return OnMouseClick (args);
}
return false;
}
///
/// Invokes the MouseClick event.
///
protected bool OnMouseClick (MouseEventEventArgs args)
{
if (!Enabled) {
return true;
}
MouseClick?.Invoke (this, args);
return args.Handled;
}
}