예제 #1
0
        private bool HandleMouseButton(WindowMouseEvent e)
        {
            Client.Position.Width = Client.CurrentLeft;

            if (e.MousePosition.Y > Position.Bottom - TextHeight)
            {
                int thumbOffset = (Position.Width - 3 * TextHeight) * scrollPosition / ScrollSize;

                // Mouse down occured within the scrollbar.
                if (e.MousePosition.X < Position.Left + TextHeight)
                {
                    // Mouse down occured on left button.
                    SetScrollPosition(scrollPosition - 10);
                }
                else if (e.MousePosition.X < Position.Left + TextHeight + thumbOffset)
                {
                    // Mouse down occured on left gutter.
                    SetScrollPosition(scrollPosition - 100);
                }
                else if (e.MousePosition.X > Position.Right - TextHeight)
                {
                    // Mouse down occured on right button.
                    SetScrollPosition(scrollPosition + 10);
                }
                else if (e.MousePosition.X > Position.Left + 2 * TextHeight + thumbOffset)
                {
                    // Mouse down occured on right gutter.
                    SetScrollPosition(scrollPosition + 100);
                }
                capturedForDragging = true;
                return(true);
            }
            return(false);
        }
예제 #2
0
        private bool HandleMouseButton(WindowMouseEvent e)
        {
            Client.Position.Height = Client.CurrentTop;

            if (e.MousePosition.X > Position.Right - TextHeight)
            {
                int thumbOffset = (Position.Height - 3 * TextHeight) * scrollPosition / ScrollSize;

                // Mouse down occured within the scrollbar.
                if (e.MousePosition.Y < Position.Top + TextHeight)
                {
                    // Mouse down occured on top button.
                    SetScrollPosition(scrollPosition - 10);
                }
                else if (e.MousePosition.Y < Position.Top + TextHeight + thumbOffset)
                {
                    // Mouse down occured on top gutter.
                    SetScrollPosition(scrollPosition - 100);
                }
                else if (e.MousePosition.Y > Position.Bottom - TextHeight)
                {
                    // Mouse down occured on bottom button.
                    SetScrollPosition(scrollPosition + 10);
                }
                else if (e.MousePosition.Y > Position.Top + 2 * TextHeight + thumbOffset)
                {
                    // Mouse down occured on bottom gutter.
                    SetScrollPosition(scrollPosition + 100);
                }
                capturedForDragging = true;
                return(true);
            }
            return(false);
        }
예제 #3
0
파일: Window.cs 프로젝트: Reve/ORTS-MG
 internal override bool HandleUserInput(WindowMouseEvent e)
 {
     if (base.HandleUserInput(e))
     {
         return(true);
     }
     return(true);
 }
예제 #4
0
        internal override bool HandleMouseUp(WindowMouseEvent e)
        {
            if (Dragging)
            {
                Dragging = false;
            }

            return(base.HandleMouseUp(e));
        }
예제 #5
0
 internal override bool HandleMouseMove(WindowMouseEvent e)
 {
     if (capturedForDragging)
     {
         SetScrollPosition(scrollPosition + e.Movement.Y);
         return(true);
     }
     return(base.HandleMouseMove(e));
 }
예제 #6
0
 internal override bool HandleMouseScroll(WindowMouseEvent e)
 {
     if (e.MouseWheelDelta != 0)
     {
         SetScrollPosition(scrollPosition - e.MouseWheelDelta);
         return(true);
     }
     return(base.HandleMouseScroll(e));
 }
예제 #7
0
 internal override bool HandleMouseScroll(WindowMouseEvent e)
 {
     foreach (var control in controls.Where(c => c.Position.Contains(e.MousePosition)))
     {
         if (control.HandleMouseScroll(e))
         {
             return(true);
         }
     }
     return(base.HandleMouseScroll(e));
 }
예제 #8
0
        internal override bool HandleMouseMove(WindowMouseEvent e)
        {
            if (UserInput.IsMouseLeftButtonDown && Dragging && UserInput.MouseMovedUp)
            {
                SetScrollPosition(ScrollPosition - (int)(DragThumbOffset * UserInput.MouseSpeedY));
            }

            if (UserInput.IsMouseLeftButtonDown && Dragging && UserInput.MouseMovedDown)
            {
                SetScrollPosition(ScrollPosition + (int)(DragThumbOffset * UserInput.MouseSpeedY));
            }

            return(base.HandleMouseMove(e));
        }
예제 #9
0
        internal override bool HandleUserInput(WindowMouseEvent e)
        {
            if (UserInput.IsMouseLeftButtonDown)
            {
                Client.Position.Height = Client.CurrentTop;

                if (e.MouseDownPosition.X > Position.Right - TextHeight)
                {
                    var thumbOffset = (int)((float)(Position.Height - 3 * TextHeight) * (float)ScrollPosition / (float)ScrollSize);

                    // Mouse down occured within the scrollbar.
                    if (!Dragging && e.MouseDownPosition.Y < Position.Top + TextHeight)
                    {
                        // Mouse down occured on top button.
                        SetScrollPosition(ScrollPosition - 10);
                    }
                    else if (!Dragging && e.MouseDownPosition.Y < Position.Top + TextHeight + thumbOffset)
                    {
                        // Mouse down occured on top gutter.
                        SetScrollPosition(ScrollPosition - 100);
                    }
                    else if (!Dragging && e.MouseDownPosition.Y > Position.Bottom - TextHeight)
                    {
                        // Mouse down occured on bottom button.
                        SetScrollPosition(ScrollPosition + 10);
                    }
                    else if (!Dragging && e.MouseDownPosition.Y > Position.Top + 2 * TextHeight + thumbOffset)
                    {
                        // Mouse down occured on bottom gutter.
                        SetScrollPosition(ScrollPosition + 100);
                    }
                    else if (e.MouseDownPosition.Y > Position.Top + TextHeight + thumbOffset && e.MouseDownPosition.Y < Position.Top + 2 * TextHeight + thumbOffset && !Dragging)
                    {
                        Dragging        = true;
                        DragThumbOffset = e.MousePosition.Y - (Position.Top + TextHeight + thumbOffset);
                    }

                    return(true);
                }
            }

            if (UserInput.IsMouseWheelChanged)
            {
                SetScrollPosition(ScrollPosition - UserInput.MouseWheelChange);
            }

            return(base.HandleUserInput(e));
        }
예제 #10
0
파일: Window.cs 프로젝트: Reve/ORTS-MG
 internal override bool HandleMouseMove(WindowMouseEvent e)
 {
     if (base.HandleMouseMove(e))
     {
         return(true);
     }
     if (UserInput.IsMouseLeftButtonDown && !Dragging && (DragWindowOffset != DragInvalid) && ((MathHelper.Distance(e.MouseScreenPosition.X, e.MouseDownScreenPosition.X) > WindowManager.DragMinimumDistance) || (MathHelper.Distance(e.MouseScreenPosition.Y, e.MouseDownScreenPosition.Y) > WindowManager.DragMinimumDistance)))
     {
         Dragging = true;
     }
     else if (UserInput.IsMouseLeftButtonDown && Dragging)
     {
         Window.MoveTo(e.MouseScreenPosition.X - DragWindowOffset.X, e.MouseScreenPosition.Y - DragWindowOffset.Y);
     }
     return(true);
 }
예제 #11
0
        internal override bool HandleUserInput(WindowMouseEvent e)
        {
            if (UserInput.IsMouseLeftButtonDown)
            {
                Client.Position.Width = Client.CurrentLeft;
                if (e.MouseDownPosition.Y > Position.Bottom - TextHeight)
                {
                    var thumbOffset = (int)((float)(Position.Width - 3 * TextHeight) * (float)ScrollPosition / (float)ScrollSize);

                    // Mouse down occured within the scrollbar.
                    if (!Dragging && e.MouseDownPosition.X < Position.Left + TextHeight)
                    {
                        // Mouse down occured on left button.
                        SetScrollPosition(ScrollPosition - 10);
                    }
                    else if (!Dragging && e.MouseDownPosition.X < Position.Left + TextHeight + thumbOffset)
                    {
                        // Mouse down occured on left gutter.
                        SetScrollPosition(ScrollPosition - 100);
                    }
                    else if (!Dragging && e.MouseDownPosition.X > Position.Right - TextHeight)
                    {
                        // Mouse down occured on right button.
                        SetScrollPosition(ScrollPosition + 10);
                    }
                    else if (!Dragging && e.MouseDownPosition.X > Position.Left + 2 * TextHeight + thumbOffset)
                    {
                        // Mouse down occured on right gutter.
                        SetScrollPosition(ScrollPosition + 100);
                    }
                    else if (e.MouseDownPosition.X > Position.Left + TextHeight + thumbOffset && e.MouseDownPosition.X < Position.Left + 2 * TextHeight + thumbOffset && !Dragging)
                    {
                        // Mouse down occured on the thumb
                        Dragging        = true;
                        DragThumbOffset = e.MousePosition.X - (Position.Left + TextHeight + thumbOffset);
                    }

                    return(true);
                }
            }
            return(base.HandleUserInput(e));
        }
예제 #12
0
파일: Window.cs 프로젝트: Reve/ORTS-MG
        internal override bool HandleMouseDown(WindowMouseEvent e)
        {
            DragWindowOffset = DragInvalid;

            if (base.HandleMouseDown(e))
            {
                return(true);
            }

            // prevent from dragging when clicking on vertical scrollbar
            if (MathHelper.Distance(base.RemainingWidth, e.MousePosition.X) < 20)
            {
                return(false);
            }

            // prevent from dragging when clicking on horizontal scrollbar
            if (MathHelper.Distance(base.RemainingHeight, e.MousePosition.Y) < 20)
            {
                return(false);
            }

            DragWindowOffset = new Point(e.MouseDownScreenPosition.X - Window.Location.X, e.MouseDownScreenPosition.Y - Window.Location.Y);
            return(true);
        }
예제 #13
0
 internal virtual void MouseClick(WindowMouseEvent e)
 {
     OnClick?.Invoke(this, new MouseClickEventArgs(e.MousePosition - position.Location, e.KeyModifiers));
 }
예제 #14
0
 internal virtual bool HandleMouseReleased(WindowMouseEvent e)
 {
     return(false);
 }
예제 #15
0
 internal virtual bool HandleMouseScroll(WindowMouseEvent e)
 {
     return(false);
 }
예제 #16
0
 internal virtual bool HandleMouseClicked(WindowMouseEvent e)
 {
     MouseClick(e);
     return(false);
 }
예제 #17
0
 internal virtual bool HandleUserInput(WindowMouseEvent e)
 {
     return(false);
 }
예제 #18
0
 internal override bool HandleMouseReleased(WindowMouseEvent e)
 {
     capturedForDragging = false;
     return(base.HandleMouseReleased(e));
 }
예제 #19
0
 internal virtual void MouseClick(WindowMouseEvent e)
 {
     OnClick(new Point(e.MouseDownPosition.X - Position.X, e.MouseDownPosition.Y - Position.Y));
 }
예제 #20
0
 internal override bool HandleMousePressed(WindowMouseEvent e)
 {
     return(HandleMouseButton(e) || base.HandleMousePressed(e));
 }