Exemple #1
0
 public override void HandleEvent(Event e)
 {
     if (!IsEnabled)
     {
         return;
     }
     if (e != null && e.type != EventType.Used)
     {
         if (_IsMouseDown)
         {
             EventType type = e.type;
             if (type == EventType.MouseDrag)
             {
                 MouseButton        mb   = ConvertButton(e.button);
                 MouseMoveEventArgs args = new MouseMoveEventArgs(e.mousePosition, e.modifiers, mb, e.delta);
                 MouseDragEvent(args);
                 if (args.Handled)
                 {
                     e.Use();
                 }
             }
             else if (type == EventType.mouseDown)
             {
                 if (!Contains(e.mousePosition))
                 {
                     if (_IsMouseDown)
                     {
                         OwnerFrame.UnregisterPrecedenceEvent(this);
                     }
                     _IsMouseDown = false;
                 }
             }
             else if (type == EventType.MouseUp || e.rawType == EventType.MouseUp)
             {
                 MouseButton         mb   = ConvertButton(e.button);
                 MouseClickEventArgs args = new MouseClickEventArgs(e.mousePosition, e.modifiers, mb, e.clickCount);
                 MouseUpEvent(args);
                 if (args.Handled)
                 {
                     e.Use();
                 }
             }
             else
             {
                 base.HandleEvent(e);
             }
         }
         else
         {
             if (WantsMouseEvents)
             {
                 if (e.isMouse)
                 {
                     EventType type       = e.type;
                     Vector2   localMouse = e.mousePosition;
                     if (_RenderAreaWidthOverFlow.Contains(localMouse))
                     {
                         if (type == EventType.MouseDown)
                         {
                             MouseButton mb = ConvertButton(e.button);
                             if (mb == MouseButton.Left)
                             {
                                 MouseClickEventArgs args = new MouseClickEventArgs(e.mousePosition, e.modifiers, mb, e.clickCount);
                                 MouseDownEvent(args);
                                 if (args.Handled)
                                 {
                                     e.Use();
                                 }
                             }
                         }
                     }
                 }
             }
             base.HandleEvent(e);
         }
     }
 }
Exemple #2
0
        protected void BaseHandleEvent(Event e)
        {
            if (IsInScrollView && !IsHandlingEventInternal || !IsEnabled)
            {
                return;
            }
            if (e != null)
            {
                if (WantsMouseEvents)
                {
                    if (e.isMouse)
                    {
                        EventType type       = e.type;
                        Vector2   localMouse = e.mousePosition;
                        if (Contains(localMouse))
                        {
                            if (!IsMouseOver)
                            {
                                IsMouseOver = true;
                                MouseEnterEvent(new MouseEventArgs(e.mousePosition, e.modifiers));
                            }

                            if (type == EventType.MouseDown || type == EventType.MouseUp)
                            {
                                MouseButton         mb   = ConvertButton(e.button);
                                MouseClickEventArgs args = new MouseClickEventArgs(e.mousePosition, e.modifiers, mb, e.clickCount);
                                if (type == EventType.MouseDown)
                                {
                                    MouseDownEvent(args);
                                }
                                else
                                {
                                    MouseUpEvent(args);
                                }
                                if (args.Handled)
                                {
                                    e.Use();
                                }
                            }
                            else if (type == EventType.ScrollWheel || type == EventType.MouseMove || type == EventType.MouseDrag)
                            {
                                MouseButton        mb   = ConvertButton(e.button);
                                MouseMoveEventArgs args = new MouseMoveEventArgs(e.mousePosition, e.modifiers, mb, e.delta);
                                if (type == EventType.ScrollWheel)
                                {
                                    OnScrollWheel(args);
                                }
                                else if (type == EventType.MouseMove)
                                {
                                    MouseMoveEvent(args);
                                }
                                else
                                {
                                    MouseDragEvent(args);
                                }
                                if (args.Handled)
                                {
                                    e.Use();
                                }
                            }
                        }
                        else
                        {
                            if (IsMouseOver)
                            {
                                IsMouseOver = false;
                                MouseLeaveEvent(new MouseEventArgs(e.mousePosition, e.modifiers));
                            }
                        }
                    }
                }
                if (ContextMenu != null && e.type != EventType.Used && e.type == EventType.ContextClick)
                {
                    Vector2 localMouse = e.mousePosition;
                    if (Contains(localMouse))
                    {
                        ContextMenu.Show(this, e.mousePosition);
                        e.Use();
                    }
                }
            }
        }