RaiseEvent() public method

public RaiseEvent ( RoutedEventArgs e ) : bool
e RoutedEventArgs
return bool
Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
            }
        }
Example #8
0
        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);
            }
        }
Example #9
0
        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);
        }
Example #10
0
        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;
        }
Example #11
0
        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);
            }
        }
Example #12
0
        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);
            }
        }