public RaiseEvent ( RoutedEventArgs e ) : bool | ||
e | RoutedEventArgs | |
return | bool |
public override bool Scrolled(int amount) { Actor target = (_scrollFocus == null) ? Root : _scrollFocus; Vector2 stageCoords = ScreenToStageCoordinates(new Vector2(_mouseScreenX, _mouseScreenY)); ScrollEventArgs ev = Pools <ScrollEventArgs> .Obtain(); ev.RoutedEvent = PreviewScrollEvent; ev.Stage = this; ev.ScrollAmountV = amount; ev.ScrollAmountH = 0; if (!target.RaiseEvent(ev)) { ev.RoutedEvent = ScrollEvent; target.RaiseEvent(ev); } bool handled = ev.Handled; Pools <ScrollEventArgs> .Release(ev); return(handled); }
public override bool TouchUp(int screenX, int screenY, int pointer, int button) { _pointerTouched[pointer] = false; _pointerScreen[pointer] = new Point(screenX, screenY); Vector2 stageCoords = ScreenToStageCoordinates(new Vector2(screenX, screenY)); TouchEventArgs ev = Pools <TouchEventArgs> .Obtain(); ev.RoutedEvent = PreviewTouchUpEvent; ev.Stage = this; ev.StagePosition = stageCoords; ev.Pointer = pointer; ev.Button = button; Actor target = _touchCapture[pointer] ?? Hit(stageCoords.X, stageCoords.Y, true); if (target == null) { target = Root; } if (!target.RaiseEvent(ev)) { ev.RoutedEvent = TouchUpEvent; target.RaiseEvent(ev); } bool handled = ev.Handled; Pools <TouchEventArgs> .Release(ev); return(handled); }
public override bool MouseMoved(int screenX, int screenY) { _mouseScreenX = screenX; _mouseScreenY = screenY; Vector2 stageCoords = ScreenToStageCoordinates(new Vector2(screenX, screenY)); MouseEventArgs ev = Pools <MouseEventArgs> .Obtain(); ev.RoutedEvent = PreviewMouseMoveEvent; ev.Stage = this; ev.StagePosition = stageCoords; Actor target = Hit(stageCoords.X, stageCoords.Y, true); if (target == null) { target = Root; } if (!target.RaiseEvent(ev)) { ev.RoutedEvent = MouseMoveEvent; target.RaiseEvent(ev); } bool handled = ev.Handled; Pools <MouseEventArgs> .Release(ev); return(handled); }
private Actor FireEnterAndExit(Actor overLast, int screenX, int screenY, int pointer) { Vector2 stageCoords = ScreenToStageCoordinates(new Vector2(screenX, screenY)); Actor over = Hit(stageCoords.X, stageCoords.Y, true); if (over == overLast) { return(overLast); } TouchEventArgs ev = Pools <TouchEventArgs> .Obtain(); ev.Stage = this; ev.StagePosition = stageCoords; ev.Pointer = pointer; if (overLast != null) { ev.RoutedEvent = TouchLeaveEvent; ev.RelatedActor = over; overLast.RaiseEvent(ev); } if (over != null) { ev.RoutedEvent = TouchEnterEvent; ev.RelatedActor = overLast; over.RaiseEvent(ev); } Pools <TouchEventArgs> .Release(ev); return(over); }
public override bool KeyTyped(char character) { Actor target = (_keyboardFocus == null) ? Root : _keyboardFocus; KeyCharEventArgs ev = Pools <KeyCharEventArgs> .Obtain(); ev.RoutedEvent = PreviewKeyTypedEvent; ev.Stage = this; ev.Character = character; if (!target.RaiseEvent(ev)) { ev.RoutedEvent = KeyTypedEvent; target.RaiseEvent(ev); } bool handled = ev.Handled; Pools <KeyCharEventArgs> .Release(ev); return(handled); }
public override bool KeyUp(int keycode) { Actor target = (_keyboardFocus == null) ? Root : _keyboardFocus; KeyEventArgs ev = Pools <KeyEventArgs> .Obtain(); ev.RoutedEvent = PreviewKeyUpEvent; ev.Stage = this; ev.KeyCode = keycode; ev.IsUp = true; if (!target.RaiseEvent(ev)) { ev.RoutedEvent = KeyUpEvent; target.RaiseEvent(ev); } bool handled = ev.Handled; Pools <KeyEventArgs> .Release(ev); return(handled); }
public void SetScrollFocus(Actor actor) { if (_scrollFocus == actor) { return; } Actor oldScrollFocus = _scrollFocus; _scrollFocus = actor; if (oldScrollFocus != null) { ScrollFocusChangedEventArgs eva = Pools <ScrollFocusChangedEventArgs> .Obtain(); eva.RoutedEvent = LostScrollFocusEvent; eva.NewFocus = actor; eva.OldFocus = oldScrollFocus; bool cancel = oldScrollFocus.RaiseEvent(eva); Pools <ScrollFocusChangedEventArgs> .Release(eva); if (cancel) { return; } } if (actor != null) { ScrollFocusChangedEventArgs eva = Pools <ScrollFocusChangedEventArgs> .Obtain(); eva.RoutedEvent = GotScrollFocusEvent; eva.NewFocus = actor; eva.OldFocus = oldScrollFocus; if (actor.RaiseEvent(eva)) { SetScrollFocus(oldScrollFocus); } Pools <ScrollFocusChangedEventArgs> .Release(eva); } }
public void SetTouchCapture(Actor actor, int pointer) { if (pointer < 0 || pointer >= _touchCapture.Length) { throw new ArgumentOutOfRangeException("pointer"); } Actor oldTouchCapture = _touchCapture[pointer]; _touchCapture[pointer] = actor; if (oldTouchCapture != null) { TouchEventArgs ev = Pools <TouchEventArgs> .Obtain(); ev.RoutedEvent = LostTouchCaptureEvent; ev.Pointer = pointer; bool cancel = oldTouchCapture.RaiseEvent(ev); Pools <TouchEventArgs> .Release(ev); if (cancel) { return; } } if (actor != null) { TouchEventArgs ev = Pools <TouchEventArgs> .Obtain(); ev.RoutedEvent = GotTouchCaptureEvent; ev.Pointer = pointer; if (actor.RaiseEvent(ev)) { SetTouchCapture(oldTouchCapture, pointer); } Pools <TouchEventArgs> .Release(ev); } }
public void Act(float delta) { // Update over actors. Done in act() because actors may change position, which can fire enter/exit without an input event. for (int pointer = 0, n = _pointerOverActors.Length; pointer < n; pointer++) { Actor overLast = _pointerOverActors[pointer]; // Check if pointer is gone. if (!_pointerTouched[pointer]) { if (overLast != null) { _pointerOverActors[pointer] = null; Vector2 stageCoords = ScreenToStageCoordinates(new Vector2(_pointerScreen[pointer].X, _pointerScreen[pointer].Y)); // Exit over last TouchEventArgs ev = Pools <TouchEventArgs> .Obtain(); ev.RoutedEvent = TouchLeaveEvent; ev.Stage = this; ev.StagePosition = stageCoords; ev.RelatedActor = overLast; ev.Pointer = pointer; overLast.RaiseEvent(ev); Pools <TouchEventArgs> .Release(ev); } continue; } // Update over actor for the pointer _pointerOverActors[pointer] = FireEnterAndExit(overLast, _pointerScreen[pointer].X, _pointerScreen[pointer].Y, pointer); } // Update over actor the mouse on the desktop // ApplicationType type = Gdx.app.getType(); // if (type == ApplicationType.Desktop || type == ApplicationType.Applet || type == ApplicationType.WebGL) _mouseOverActor = FireEnterAndExit(_mouseOverActor, _mouseScreenX, _mouseScreenY, -1); Root.Act(delta); }
private Actor FireEnterAndExit(Actor overLast, int screenX, int screenY, int pointer) { Vector2 stageCoords = ScreenToStageCoordinates(new Vector2(screenX, screenY)); Actor over = Hit(stageCoords.X, stageCoords.Y, true); if (over == overLast) return overLast; TouchEventArgs ev = Pools<TouchEventArgs>.Obtain(); ev.Stage = this; ev.StagePosition = stageCoords; ev.Pointer = pointer; if (overLast != null) { ev.RoutedEvent = TouchLeaveEvent; ev.RelatedActor = over; overLast.RaiseEvent(ev); } if (over != null) { ev.RoutedEvent = TouchEnterEvent; ev.RelatedActor = overLast; over.RaiseEvent(ev); } Pools<TouchEventArgs>.Release(ev); return over; }
public void SetTouchCapture(Actor actor, int pointer) { if (pointer < 0 || pointer >= _touchCapture.Length) throw new ArgumentOutOfRangeException("pointer"); Actor oldTouchCapture = _touchCapture[pointer]; _touchCapture[pointer] = actor; if (oldTouchCapture != null) { TouchEventArgs ev = Pools<TouchEventArgs>.Obtain(); ev.RoutedEvent = LostTouchCaptureEvent; ev.Pointer = pointer; bool cancel = oldTouchCapture.RaiseEvent(ev); Pools<TouchEventArgs>.Release(ev); if (cancel) return; } if (actor != null) { TouchEventArgs ev = Pools<TouchEventArgs>.Obtain(); ev.RoutedEvent = GotTouchCaptureEvent; ev.Pointer = pointer; if (actor.RaiseEvent(ev)) SetTouchCapture(oldTouchCapture, pointer); Pools<TouchEventArgs>.Release(ev); } }
public void SetScrollFocus(Actor actor) { if (_scrollFocus == actor) return; Actor oldScrollFocus = _scrollFocus; _scrollFocus = actor; if (oldScrollFocus != null) { ScrollFocusChangedEventArgs eva = Pools<ScrollFocusChangedEventArgs>.Obtain(); eva.RoutedEvent = LostScrollFocusEvent; eva.NewFocus = actor; eva.OldFocus = oldScrollFocus; bool cancel = oldScrollFocus.RaiseEvent(eva); Pools<ScrollFocusChangedEventArgs>.Release(eva); if (cancel) return; } if (actor != null) { ScrollFocusChangedEventArgs eva = Pools<ScrollFocusChangedEventArgs>.Obtain(); eva.RoutedEvent = GotScrollFocusEvent; eva.NewFocus = actor; eva.OldFocus = oldScrollFocus; if (actor.RaiseEvent(eva)) SetScrollFocus(oldScrollFocus); Pools<ScrollFocusChangedEventArgs>.Release(eva); } }