/// <summary> /// Called when a mouse button is pressed. /// </summary> /// <param name="position">The position.</param> /// <param name="key">The key.</param> internal void OnInputMousePress(Vector2 position, MouseKey key) { if (isMouseOver) { var relative = position - this.position; foreach (var control in Controls) { if (control.Visible) { if (control.IsPointInside(relative)) { if (control.Enabled) { control.OnInputMousePress(relative, key); } return; } } } isMouseDown[key.Key] = true; MouseDown(this, new MouseEventArgs(Manager.Time.Total, key)); } }
/// <summary> /// Called when a mouse button is released. /// </summary> /// <param name="position">The position.</param> /// <param name="key">The key.</param> internal void OnInputMouseRelease(Vector2 position, MouseKey key) { if (isMouseDown.ContainsKey(key.Key)) { if (isMouseDown[key.Key]) { MouseClick(this, new MouseEventArgs(Manager.Time.Total, key)); if (Manager.Time.Total - lastMouseUp <= SystemInformation.DoubleClickTime/1000.0f && Math.Abs(lastMouseUpPosition.X - position.X) <= SystemInformation.DoubleClickSize.Width && Math.Abs(lastMouseUpPosition.Y - position.Y) <= SystemInformation.DoubleClickSize.Height && lastMouseKeyUp == key.Key) { lastMouseUp = 0.0; MouseDoubleClick(this, new MouseEventArgs(Manager.Time.Total, key)); } else { lastMouseKeyUp = key.Key; lastMouseUp = Manager.Time.Total; lastMouseUpPosition = position; } isMouseDown[key.Key] = false; MouseUp(this, new MouseEventArgs(Manager.Time.Total, key)); if (!IsPointInside(position)) { isMouseOver = false; MouseLeave(this, new EventArgs()); } } } var relative = position - this.position; foreach (var control in Controls) { control.OnInputMouseRelease(relative, key); } }
/// <summary> /// Listens for mouse button release events. /// </summary> /// <param name="key">Released key.</param> private void OnInputMouseReleased(MouseKey key) { if (!Transitioning) { Interface.OnInputMouseRelease(input.Mouse.Position, key); } }
/// <summary> /// Listens for mouse button press events. /// </summary> /// <param name="key">Pressed key.</param> private void OnInputMousePressed(MouseKey key) { if (!Transitioning) { var control = Interface.GetControlAt(input.Mouse.Position); if (control != null) { if (key.Key == MouseButton.Left) { if (control.CanFocus) { if (focus != control) { Focus(control); } } } control.OnInputMousePress(input.Mouse.Position - control.RealPosition, key); } } }
/// <summary> /// Initializes a new instance of the <see cref="MouseEventArgs" /> class. /// </summary> /// <param name="key">The key.</param> public MouseEventArgs(MouseKey key) { Scroll = 0; Key = key; }
/// <summary> /// Initializes a new instance of the <see cref="MouseEventArgs" /> class. /// </summary> /// <param name="time">The time.</param> /// <param name="key">The key.</param> public MouseEventArgs(double time, MouseKey key) : base(time) { Scroll = 0; Key = key; }
/// <summary> /// Initializes a new instance of the <see cref="MouseEventArgs" /> class. /// </summary> /// <param name="time">The time.</param> /// <param name="key">The key.</param> /// <param name="amount">The amount.</param> public MouseEventArgs(double time, MouseKey key, int amount) : base(time) { Scroll = amount; Key = key; }