예제 #1
0
        public override void MouseUp(NSEvent evt)
        {
            try
            {
                var wasPointerOver = IsPointerOver;
                IsPointerOver = evt.IsTouchInView(this);

                // Call entered/exited one last time
                // evt.AllTouches raises a invalid selector exception
                var args = new PointerRoutedEventArgs(null, evt)
                {
                    CanBubbleNatively = true,
                    OriginalSource    = this
                };

                var pointerEventIsHandledInManaged = false;

                if (!wasPointerOver && IsPointerOver)
                {
                    pointerEventIsHandledInManaged = RaiseEvent(PointerEnteredEvent, args);
                }
                else if (wasPointerOver && !IsPointerOver)
                {
                    pointerEventIsHandledInManaged = RaiseEvent(PointerExitedEvent, args);
                }

                if (IsPointerCaptured || IsPointerOver)
                {
                    args.Handled = false;                     // reset as unhandled
                    pointerEventIsHandledInManaged = RaiseEvent(PointerReleasedEvent, args) || pointerEventIsHandledInManaged;
                }

                if (IsPointerCaptured)
                {
                    args.Handled = false;                     // reset as unhandled
                    pointerEventIsHandledInManaged = RaiseEvent(PointerCaptureLostEvent, args) || pointerEventIsHandledInManaged;
                }

                if (!pointerEventIsHandledInManaged)
                {
                    // Bubble up the event natively
                    base.MouseUp(evt);
                }

                IsPointerPressed = false;
                IsPointerOver    = false;
                _pointCaptures.Clear();
            }
            catch (Exception e)
            {
                Application.Current.RaiseRecoverableUnhandledException(e);
            }
        }
예제 #2
0
파일: UIElement.macOS.cs 프로젝트: rppp/uno
        public override void MouseDown(NSEvent evt)
        {
            try
            {
                var pointerEventIsHandledInManaged = false;

                if (evt.IsTouchInView(this))
                {
                    IsPointerPressed = true;
                    IsPointerOver    = true;

                    // evt.AllTouches raises a invalid selector exception
                    var args = new PointerRoutedEventArgs(null, evt)
                    {
                        CanBubbleNatively = true,
                        OriginalSource    = this
                    };

                    pointerEventIsHandledInManaged = RaiseEvent(PointerEnteredEvent, args);

                    args.Handled = false;                     // reset for "pressed" event

                    pointerEventIsHandledInManaged = RaiseEvent(PointerPressedEvent, args) || pointerEventIsHandledInManaged;
                }

                if (!pointerEventIsHandledInManaged)
                {
                    // Bubble up the event natively
                    base.MouseDown(evt);
                }
            }
            catch (Exception e)
            {
                Application.Current.RaiseRecoverableUnhandledException(e);
            }
        }
예제 #3
0
        public override void MouseDragged(NSEvent evt)
        {
            if (IsPointersSuspended)
            {
                return;
            }

            try
            {
                // evt.AllTouches raises a invalid selector exception
                var args = new PointerRoutedEventArgs(null, evt, this);

                var pointerEventIsHandledInManaged = OnNativePointerMoveWithOverCheck(args, evt.IsTouchInView(this));

                if (!pointerEventIsHandledInManaged)
                {
                    // Bubble up the event natively
                    base.MouseDragged(evt);
                }
            }
            catch (Exception e)
            {
                Application.Current.RaiseRecoverableUnhandledException(e);
            }
        }