protected virtual bool HandlePointerEvents() { if (heldControl != null && heldControl != this) { return(false); } bool pointerHandled = false; if (pointedControl == this) { pointerHandled = true; if (IntersectsPointer()) { if (CheckEvent(onInputHover, MouseButton.None)) { } } else { //Console.WriteLine("Left 1: " + ToString()); CheckEvent(onInputLeave, MouseButton.None); pointedControl = null; } } else { if (IntersectsPointer()) { if (pointedControl != null && pointedControl != this) { //Console.WriteLine("Left 2: " + pointedControl.ToString()); pointedControl.CheckEvent(pointedControl.onInputLeave, MouseButton.None); pointedControl = null; } //Console.WriteLine("Entered: " + ToString()); CheckEvent(onInputEnter, MouseButton.None); UIControl.pointedControl = this; pointerHandled = true; } } if (PointerDown) { if (InputManager.AnyMousePressed && CheckEvent(onInputPressed, InputManager.MousePressed)) { //Console.WriteLine("Pressed: " + ToString()); pointerHandled = true; heldControl = this; } if (InputManager.AnyMouseDown) { bool inputMoveInitiated = false; if (InputManager.MouseMoved) { inputMoveInitiated = CheckEvent(onInputMoved, InputManager.MouseDown); //Console.WriteLine( ToString() + ": Moved " + mouseMoveInitiated ); } if (CheckEvent(onInputHeld, InputManager.MouseDown)) { //Console.WriteLine("Pointer held: " + ToString()); pointerHandled = true; heldControl = this; } pointerHandled = AbsorbPointer || inputMoveInitiated; } if (InputManager.AnyMouseReleased && IntersectsPointer() && CheckEvent(onInputReleased, InputManager.MouseReleased)) { //Console.WriteLine("Release: " + ToString()); pointerHandled = true; heldControl = null; } if (!InputManager.AnyMouseDown) { //Console.WriteLine("Pointer Up: " + ToString()); PointerDown = false; if (CheckEvent(onInputReleasedAnywhere, InputManager.MouseReleased)) { pointerHandled = true; } if (heldControl != null) { heldControl = null; pointerHandled = true; } } } return(pointerHandled); }
protected virtual bool HandlePointerEvents() { if (heldControl != null && heldControl != this) { return(false); } bool pointerHandled = false; if (pointedControl == this) { pointerHandled = true; if (IntersectsPointer()) { CheckEvent(onInputHover); } else { //Console.WriteLine("Leave 1: " + ToString()); CheckEvent(onInputLeave); pointedControl = null; } } else { if (AbsorbPointer && IntersectsPointer()) { if (pointedControl != null && pointedControl != this) { //Console.WriteLine("Leave 2: " + pointedControl.ToString()); pointedControl.CheckEvent(pointedControl.onInputLeave); pointedControl = null; } // TODO: Enable fall-through logic for onInputEnter //Console.WriteLine("Entered: " + ToString()); CheckEvent(onInputEnter); pointedControl = this; pointerHandled = true; } } //Console.WriteLine("Pointer AbsorbPointer: " + ToString() + " " + AbsorbPointer); if (PointerDown) { if (InputManager.AnyMousePressed && CheckEvent(onInputPressed, InputManager.MousePressed)) { //Console.WriteLine("Pressed: " + ToString()); pointerHandled = true; heldControl = this; } if (InputManager.AnyMouseHeld) { //Console.WriteLine(ToString() + ": AnyMouseHeld"); bool inputMoveInitiated = false; if (InputManager.MouseMoved) { inputMoveInitiated = CheckEvent(onInputMoved, InputManager.MouseHeld); //Console.WriteLine( ToString() + ": Moved " + mouseMoveInitiated ); if (inputMoveInitiated) { heldControl = this; // TODO: This has not been tested properly } } if (CheckEvent(onInputHeld, InputManager.MouseHeld)) { //Console.WriteLine("Pointer held: " + ToString()); pointerHandled = true; heldControl = this; } pointerHandled = AbsorbPointer || inputMoveInitiated; } if (InputManager.AnyMouseReleased && IntersectsPointer() && CheckEvent(onInputReleased, InputManager.MouseReleased)) { //Console.WriteLine("Release: " + ToString()); pointerHandled = true; heldControl = null; } if (!InputManager.AnyMouseHeld) { //Console.WriteLine("Pointer Up: " + ToString()); PointerDown = false; pointerHandled = true; if (CheckEvent(onInputReleasedAnywhere, InputManager.MouseReleased)) { pointerHandled = true; } if (heldControl != null) { heldControl = null; pointerHandled = true; } } } return(pointerHandled); }