Beispiel #1
0
        public void Update()
        {
            if (_lastHitTest != null)
            {
                if (MouseManager.IsDown(MouseButton.Left))
                {
                    var test = _lastHitTest.HitTest();
                    if (test.IsHit)
                    {
                        return;
                    }
                    _lastHitTest = null;
                }

                _lastHitTest = null;
            }

            if (_draggable.HitTest().IsHit)
            {
                var delta = _draggable.GetMoveDelta();
                _draggable.InvalidateDelta();
                var x = ((int)(CleanRect.X - delta.X)).Clamp(0, _mainWindow.Width - CleanRect.Width);
                var y = ((int)(CleanRect.Y - delta.Y)).Clamp(0, _mainWindow.Height - CleanRect.Height);
                X = x;
                Y = y;
                _draggable.SetRect(new Rectangle(_captionBarRect.Left, _captionBarRect.Top, _captionBarRect.Width - Ui.CaptionHeight - BorderSize, _captionBarRect.Height));
                SetRect(new Rectangle(X, Y, Width, Height));
                IsDirty = true;
                return;
            }

            _ = _closeButton.HitTest();


            for (var i = _controls.Count - 1; i > -1; i--)
            {
                var test = _controls[i].HitTest();
                if (!test.IsHit)
                {
                    continue;
                }
                _lastHitTest = test.Control;
                return;
            }
        }
Beispiel #2
0
        public void Update()
        {
            if (!Visible)
            {
                return;
            }

            if (_listBox.HitTest().IsHit)
            {
                IsDirty = true;
                return;
            }

            // hit test first, then check mouse is down outside of context menu
            if (MouseManager.IsDown(MouseButton.Left) && !CleanRect.Contains(UiState.Mouse.Position))
            {
                Shortcuts.SetToolSelect();
                Close();
            }
        }
        public override HitBox HitTest()
        {
            HitBox hit;

            if (_draggable.HitTest().IsHit)
            {
                var delta  = (int)(_draggable.GetHorizontalMoveDelta() * _dragMultiplier);
                var parent = (ICanHaveHorizontalScrollBar)Parent;
                parent.HorizontalScroll(-delta);
                _draggable.InvalidateDelta();
                return(HitBox.Hit(this));
            }
            else if (MouseManager.IsDown(MouseButton.Left) &&
                     _bgHitBox.Contains(UiState.Mouse.Position))
            {
                var parent             = (ICanHaveHorizontalScrollBar)Parent;
                var hitBoxX            = UiState.Mouse.Position.X - _bgHitBox.Left;
                var scrollPercent      = (float)hitBoxX / _bgHitBox.Width;
                var scrollIndexAtClick = Math.Min((int)(parent.HorizontalMaxScrollIndex * scrollPercent),
                                                  parent.HorizontalMaxScrollIndex);
                parent.HorizontalScrollTo(scrollIndexAtClick);
            }
            else if ((hit = _leftArrow.HitTest()).IsHit)
            {
                return(hit);
            }
            else if ((hit = _rightArrow.HitTest()).IsHit)
            {
                return(hit);
            }
            else if ((hit = _mouseScrollable.HitTest()).IsHit)
            {
                return(hit);
            }

            return(HitBox.Miss);
        }