示例#1
0
        internal bool DoMouseMove(MouseMoveEventArgs e)
        {
            if (Parent == null)
            {
                return(false);
            }

            if (!isDragged)
            {
                Point im = new Point(e.X - inner.X, e.Y - inner.Y);

                if (hoverChild != null && hoverChild.IsDragged)
                {
                    hoverChild.DoMouseMove(new MouseMoveEventArgs(im.X - hoverChild.Outer.X, im.Y - hoverChild.Outer.Y, e.XDelta, e.YDelta));
                    return(true);
                }

                if (inner.Contains(e.Position))
                {
                    foreach (GLControl control in controls)
                    {
                        if (control.Outer.Contains(im))
                        {
                            if (control.DoMouseMove(new MouseMoveEventArgs(im.X - control.Outer.X, im.Y - control.Outer.Y, e.XDelta, e.YDelta)))
                            {
                                if (hoverChild != control)
                                {
                                    if (hoverChild != null)
                                    {
                                        hoverChild.DoMouseLeave();
                                    }
                                    hoverChild = control;
                                    hoverChild.DoMouseEnter();
                                }
                                return(true);
                            }
                        }
                    }
                }

                if (hoverChild != null)
                {
                    hoverChild.DoMouseLeave();
                    hoverChild = null;
                }
            }

            if (MouseMove != null)
            {
                MouseMove(this, e);
                return(true);
            }

            if (MouseEnter != null || MouseLeave != null)             // force correct MouseEnter/Leave handling
            {
                return(true);
            }

            return(handleMouseEvents);
        }