コード例 #1
0
ファイル: ViewTests.cs プロジェクト: alasai/gui.cs
        public void New_Methods_Return_False()
        {
            var r = new View();

            Assert.False(r.ProcessKey(new KeyEvent()
            {
                Key = Key.Unknown
            }));
            Assert.False(r.ProcessHotKey(new KeyEvent()
            {
                Key = Key.Unknown
            }));
            Assert.False(r.ProcessColdKey(new KeyEvent()
            {
                Key = Key.Unknown
            }));
            Assert.False(r.OnKeyDown(new KeyEvent()
            {
                Key = Key.Unknown
            }));
            Assert.False(r.OnKeyUp(new KeyEvent()
            {
                Key = Key.Unknown
            }));
            Assert.False(r.MouseEvent(new MouseEvent()
            {
                Flags = MouseFlags.AllEvents
            }));
            Assert.False(r.OnMouseEnter(new MouseEvent()
            {
                Flags = MouseFlags.AllEvents
            }));
            Assert.False(r.OnMouseLeave(new MouseEvent()
            {
                Flags = MouseFlags.AllEvents
            }));
            Assert.False(r.OnEnter(new View()));
            Assert.False(r.OnLeave(new View()));

            // TODO: Add more
        }
コード例 #2
0
        static void ProcessMouseEvent(MouseEvent me)
        {
            var view = FindDeepestView(Current, me.X, me.Y, out int rx, out int ry);

            if (view != null && view.WantContinuousButtonPressed)
            {
                wantContinuousButtonPressedView = view;
            }
            else
            {
                wantContinuousButtonPressedView = null;
            }

            RootMouseEvent?.Invoke(me);
            if (mouseGrabView != null)
            {
                var newxy = mouseGrabView.ScreenToView(me.X, me.Y);
                var nme   = new MouseEvent()
                {
                    X     = newxy.X,
                    Y     = newxy.Y,
                    Flags = me.Flags,
                    OfX   = me.X - newxy.X,
                    OfY   = me.Y - newxy.Y,
                    View  = view
                };
                if (OutsideFrame(new Point(nme.X, nme.Y), mouseGrabView.Frame))
                {
                    lastMouseOwnerView?.OnMouseLeave(me);
                }
                if (mouseGrabView != null)
                {
                    mouseGrabView.OnMouseEvent(nme);
                    return;
                }
            }

            if (view != null)
            {
                var nme = new MouseEvent()
                {
                    X     = rx,
                    Y     = ry,
                    Flags = me.Flags,
                    OfX   = rx,
                    OfY   = ry,
                    View  = view
                };

                if (lastMouseOwnerView == null)
                {
                    lastMouseOwnerView = view;
                    view.OnMouseEnter(nme);
                }
                else if (lastMouseOwnerView != view)
                {
                    lastMouseOwnerView.OnMouseLeave(nme);
                    view.OnMouseEnter(nme);
                    lastMouseOwnerView = view;
                }

                if (!view.WantMousePositionReports && me.Flags == MouseFlags.ReportMousePosition)
                {
                    return;
                }

                if (view.WantContinuousButtonPressed)
                {
                    wantContinuousButtonPressedView = view;
                }
                else
                {
                    wantContinuousButtonPressedView = null;
                }

                // Should we bubbled up the event, if it is not handled?
                view.OnMouseEvent(nme);
            }
        }