/// <summary> /// Processes the mouse. If allowed, will move the console around with the mouse. /// </summary> /// <param name="info">The mouse state.</param> /// <returns></returns> public override bool ProcessMouse(Input.MouseInfo info) { if (_titleWidth != 0 && _isVisible) { info.Fill(this); if (_isDragging && info.LeftButtonDown) { if (base.UseAbsolutePositioning) { Position = new Point(info.ScreenLocation.X - (_previousMouseInfo.ScreenLocation.X - _consoleAtDragAbsPos.X), info.ScreenLocation.Y - (_previousMouseInfo.ScreenLocation.Y - _consoleAtDragAbsPos.Y)); } else { Position = new Point(info.WorldLocation.X - _previousMouseInfo.ConsoleLocation.X, info.WorldLocation.Y - _previousMouseInfo.ConsoleLocation.Y); } return(true); } // Stopped dragging if (_isDragging && !info.LeftButtonDown) { _isDragging = false; ExclusiveFocus = _prevousMouseExclusiveDrag; return(true); } // Left button freshly down and we're not already dragging, check to see if in title if (!_isDragging && !_previousMouseInfo.LeftButtonDown && info.LeftButtonDown) { if (info.ConsoleLocation.Y == 0 && info.ConsoleLocation.X >= _titleLocationX && info.ConsoleLocation.X < _titleLocationX + _titleWidth) { _prevousMouseExclusiveDrag = ExclusiveFocus; // Mouse is in the title bar ExclusiveFocus = true; _isDragging = true; _consoleAtDragAbsPos = base.Position; if (this.MouseCanFocus) { if (Engine.ActiveConsole != this) { Engine.ActiveConsole = this; } if (this.Parent != null && this.Parent.IndexOf(this) != this.Parent.Count - 1) { this.Parent.MoveToTop(this); } } } } _previousMouseInfo = info.Clone(); } return(base.ProcessMouse(info)); }
/// <summary> /// Processes the mouse for the console. /// </summary> /// <param name="info">Mouse information sent by the engine.</param> /// <returns>True when the mouse is over this console and it is the active console; otherwise false.</returns> public override bool ProcessMouse(Input.MouseInfo info) { if (base.ProcessMouse(info) && info.Console == this && (Engine.ActiveConsole == this || ProcessMouseWithoutFocus)) { if (_capturedControl != null) { _capturedControl.ProcessMouse(info); } else { for (int i = 0; i < _controls.Count; i++) { if (_controls[i].IsVisible && _controls[i].ProcessMouse(info)) { break; } } } return(true); } return(false); }
public virtual bool ProcessMouse(Input.MouseInfo info) { info.Console = null; if (IsVisible) { var copyList = new List <IConsole>(_consoles); for (int i = copyList.Count - 1; i >= 0; i--) { if (copyList[i].ProcessMouse(info)) { //var console = this[i]; // TODO: Update this to only move console to front if either setting says to, and\or when console is clicked. // TODO: Console that was true with process mouse should be set as active console. (info.Console) //if (i != Count - 1) //{ // this.Remove(console); // this.Add(console); //} return(true); } } } return(false); }
/// <summary> /// Called when the left-mouse button is clicked. /// </summary> /// <param name="info">The mouse state.</param> protected override void OnLeftMouseClicked(Input.MouseInfo info) { base.OnLeftMouseClicked(info); if (isEnabled) { DoClick(); } }
/// <summary> /// Called when the right mouse button is clicked. Raises the MouseButtonClicked event and calls the <see cref="DetermineAppearance"/> method. /// </summary> /// <param name="info">The current mouse data</param> protected virtual void OnRightMouseClicked(Input.MouseInfo info) { if (MouseButtonClicked != null) { MouseButtonClicked(this, new MouseEventArgs(info)); } DetermineAppearance(); }
/// <summary> /// Called as the mouse moves around the control area. Raises the MouseMove event and calls the <see cref="DetermineAppearance"/> method. /// </summary> /// <param name="info">The current mouse data</param> protected virtual void OnMouseIn(Input.MouseInfo info) { if (MouseMove != null) { MouseMove(this, new MouseEventArgs(info)); } DetermineAppearance(); }
protected override void OnLeftMouseClicked(Input.MouseInfo info) { base.OnLeftMouseClicked(info); if (isEnabled) { IsSelected = true; } }
/// <summary> /// Called when the left mouse button is clicked. Raises the MouseButtonClicked event and calls the <see cref="DetermineAppearance"/> method. /// </summary> /// <param name="info">The current mouse data</param> protected virtual void OnLeftMouseClicked(Input.MouseInfo info) { if (MouseButtonClicked != null) { MouseButtonClicked(this, new MouseEventArgs(info)); } if (FocusOnClick) { this.IsFocused = true; } DetermineAppearance(); }
protected override void OnMouseExit(Input.MouseInfo info) { base.OnMouseExit(info); for (int i = 0; i < _controls.Count; i++) { if (_controls[i].IsVisible && _controls[i].ProcessMouse(info)) { break; } } //if (_focusedControl != null) //_focusedControl.ProcessMouse(info); }
/// <summary> /// Checks if the mouse is the control and calls the appropriate mouse methods. /// </summary> /// <param name="info">Mouse information.</param> /// <returns>Always returns false.</returns> public virtual bool ProcessMouse(Input.MouseInfo info) { if (IsEnabled && CanUseMouse) { if (info.ConsoleLocation.X >= Position.X && info.ConsoleLocation.X < Position.X + Width && info.ConsoleLocation.Y >= Position.Y && info.ConsoleLocation.Y < Position.Y + Height) { if (_isMouseOver != true) { _isMouseOver = true; OnMouseEnter(info); } OnMouseIn(info); if (info.LeftClicked) { OnLeftMouseClicked(info); } if (info.RightClicked) { OnRightMouseClicked(info); } } else { if (_isMouseOver) { _isMouseOver = false; OnMouseExit(info); } } } return(false); }
/// <summary> /// Called when the mouse leaves the control area. /// </summary> /// <param name="info">The mouse state.</param> protected override void OnMouseExit(Input.MouseInfo info) { isMouseDown = false; base.OnMouseExit(info); }
/// <summary> /// Called when the mouse is in the control area. /// </summary> /// <param name="info">The mouse state.</param> protected override void OnMouseIn(Input.MouseInfo info) { isMouseDown = info.LeftButtonDown; base.OnMouseIn(info); }
/// <summary> /// Helper method that returns the mouse x,y position for the control. /// </summary> /// <param name="info">The mouse information as used by a mouse event.</param> /// <returns>The x,y position of the mouse over the control.</returns> protected Point TransformConsolePositionByControlPosition(Input.MouseInfo info) { return(new Point(info.ConsoleLocation.X - this.Position.X, info.ConsoleLocation.Y - this.Position.Y)); }
public virtual bool ProcessMouse(Input.MouseInfo info) { return(false); }
protected override void OnMouseIn(Input.MouseInfo info) { isMouseOver = true; base.OnMouseIn(info); }
// Locking the mouse to this control is actually locking the parent console to the engine, and then // letting the controls console know that this control wants exclusive focus until mouse is unclicked. public override bool ProcessMouse(Input.MouseInfo info) { if (IsEnabled) { base.ProcessMouse(info); var mouseControlPosition = new Point(info.ConsoleLocation.X - this.Position.X, info.ConsoleLocation.Y - this.Position.Y); // This becomes the active mouse subject when the bar is being dragged. if (Parent.CapturedControl == null) { if (info.ConsoleLocation.X >= this.Position.X && info.ConsoleLocation.X < this.Position.X + textSurface.Width && info.ConsoleLocation.Y >= this.Position.Y && info.ConsoleLocation.Y < this.Position.Y + textSurface.Height) { if (info.LeftClicked) { if (_barOrientation == System.Windows.Controls.Orientation.Horizontal) { if (mouseControlPosition.X == 0) { Value -= Step; } if (mouseControlPosition.X == textSurface.Width - 1) { Value += Step; } } else { if (mouseControlPosition.Y == 0) { Value -= Step; } if (mouseControlPosition.Y == textSurface.Height - 1) { Value += Step; } } Parent.FocusedControl = this; } // Need to set a flag signalling that we've locked in a drag. // When the mouse button is let go, clear the flag. if (info.LeftButtonDown) { if (_barOrientation == System.Windows.Controls.Orientation.Horizontal) { if (mouseControlPosition.Y == 0) { if (mouseControlPosition.X == _currentSliderPosition + 1) { Parent.CaptureControl(this); } } } else { if (mouseControlPosition.X == 0) { if (mouseControlPosition.Y == _currentSliderPosition + 1) { Parent.CaptureControl(this); } } } Parent.FocusedControl = this; } return(true); } } else if (Parent.CapturedControl == this) { if (info.ConsoleLocation.X >= this.Position.X - 2 && info.ConsoleLocation.X < this.Position.X + textSurface.Width + 2 && info.ConsoleLocation.Y >= this.Position.Y - 3 && info.ConsoleLocation.Y < this.Position.Y + textSurface.Height + 3) { if (info.LeftButtonDown) { if (_barOrientation == System.Windows.Controls.Orientation.Horizontal) { //if (mouseControlPosition.Y == 0) //{ // if (mouseControlPosition.X == _currentSliderPosition + 1) // Value -= Step; //} if (mouseControlPosition.X >= 1 && mouseControlPosition.X <= _sliderBarSize) { _currentSliderPosition = mouseControlPosition.X - 1; if (_sliderPositionValues[_currentSliderPosition] != -1) { _value = _sliderPositionValues[_currentSliderPosition]; if (ValueChanged != null) { ValueChanged.Invoke(this, EventArgs.Empty); } this.IsDirty = true; } } } else { if (mouseControlPosition.Y >= 1 && mouseControlPosition.Y <= _sliderBarSize) { _currentSliderPosition = mouseControlPosition.Y - 1; if (_sliderPositionValues[_currentSliderPosition] != -1) { _value = _sliderPositionValues[_currentSliderPosition]; if (ValueChanged != null) { ValueChanged.Invoke(this, EventArgs.Empty); } this.IsDirty = true; } } } return(true); } else { Parent.ReleaseControl(); } return(false); } } //else if(Parent.CapturedControl == this && !info.LeftButtonDown) //{ // Parent.ReleaseControl(); //} } return(false); }