예제 #1
0
        /// <inheritdoc/>
        public override bool ProcessMouse(SadConsole.Input.MouseScreenObjectState info)
        {
            if (Parent.Host.CapturedControl == this)
            {
                if (info.Mouse.LeftButtonDown == false)
                {
                    Parent.Host.ReleaseControl();
                }
                else
                {
                    var   newState = new ControlMouseState(this, info);
                    Point location = newState.MousePosition;

                    //if (info.ConsolePosition.X >= Position.X && info.ConsolePosition.X < Position.X + Width)
                    if (location.X >= 0 && location.X <= Width - 1 && location.Y > -4 && location.Y < Height + 3)
                    {
                        SelectedPosition  = location.X;
                        SelectedColorSafe = Surface[SelectedPosition, 0].Foreground;
                    }

                    IsDirty = true;
                }
            }

            return(base.ProcessMouse(info));
        }
예제 #2
0
        /// <inheritdoc/>
        public override bool ProcessMouse(SadConsole.Input.MouseScreenObjectState info)
        {
            if (Parent.Host.CapturedControl == this)
            {
                if (info.Mouse.LeftButtonDown == false)
                {
                    Parent.Host.ReleaseControl();
                }
                else
                {
                    var newState = new ControlMouseState(this, info);
                    var location = newState.MousePosition;

                    //if (info.ConsolePosition.X >= Position.X && info.ConsolePosition.X < Position.X + Width)
                    if (location.X >= -6 && location.X <= Width + 5 && location.Y > -4 && location.Y < Height + 3)
                    {
                        Surface[_selectedColorPosition.X, _selectedColorPosition.Y].Glyph = 0;
                        _selectedColorPosition = new Point(Math.Clamp(location.X, 0, Width - 1), Math.Clamp(location.Y, 0, Height - 1));
                        SelectedColorSafe      = Surface[_selectedColorPosition.X, _selectedColorPosition.Y].Background;
                        Surface[_selectedColorPosition.X, _selectedColorPosition.Y].Glyph = 4;
                    }

                    IsDirty = true;
                }
            }

            return(base.ProcessMouse(info));
        }
예제 #3
0
        /// <inheritdoc/>
        public override bool ProcessMouse(MouseScreenObjectState state)
        {
            if (IsEnabled && UseMouse)
            {
                bool processResult = base.ProcessMouse(state);

                var controls = new List <ControlBase>(Controls);
                controls.Reverse();

                foreach (var control in controls)
                {
                    var state2 = new ControlMouseState(control, state);

                    if (state2.IsMouseOver && state.Mouse.RightClicked)
                    {
                        System.Diagnostics.Debugger.Break();
                    }

                    if (control.ProcessMouse(state))
                    {
                        return(true);
                    }
                }

                return(processResult);
            }

            return(false);
        }
예제 #4
0
        /// <inheritdoc/>
        protected override void OnLeftMouseClicked(ControlMouseState info)
        {
            if (MouseArea.Contains(info.MousePosition))
            {
                SelectedCharacter = Surface[info.MousePosition.ToIndex(Width)].Glyph;
            }

            base.OnLeftMouseClicked(info);
        }
예제 #5
0
        /// <inheritdoc/>
        protected override void OnMouseExit(ControlMouseState state)
        {
            base.OnMouseExit(state);

            var controls = new List <ControlBase>(Controls);

            foreach (var control in controls)
            {
                control.LostMouse(state.OriginalMouseState);
            }
        }
예제 #6
0
        /// <inheritdoc/>
        protected override void OnMouseIn(ControlMouseState info)
        {
            if (!MouseState_EnteredWithButtonDown && MouseArea.Contains(info.MousePosition) && info.OriginalMouseState.Mouse.LeftButtonDown)
            {
                if (!UseFullClick)
                {
                    SelectedCharacter = Surface[info.MousePosition.ToIndex(Width)].Glyph;
                }
            }

            base.OnMouseIn(info);
        }
예제 #7
0
        /// <inheritdoc/>
        protected override void OnMouseIn(ControlMouseState info)
        {
            base.OnMouseIn(info);

            if (Parent.Host.CapturedControl == null)
            {
                if (info.OriginalMouseState.Mouse.LeftButtonDown)
                {
                    Point location = info.MousePosition;
                    SelectedPosition  = location.X;
                    SelectedColorSafe = Surface[SelectedPosition, 0].Foreground;
                    IsDirty           = true;

                    Parent.Host.CaptureControl(this);
                }
            }
        }
예제 #8
0
        /// <inheritdoc/>
        protected override void OnMouseIn(ControlMouseState info)
        {
            base.OnMouseIn(info);

            if (Parent.Host.CapturedControl == null)
            {
                if (info.OriginalMouseState.Mouse.LeftButtonDown)
                {
                    var location = info.MousePosition;
                    Surface[_selectedColorPosition.X, _selectedColorPosition.Y].Glyph = 0;
                    _selectedColorPosition = location;
                    SelectedColorSafe      = Surface[_selectedColorPosition.X, _selectedColorPosition.Y].Background;
                    Surface[_selectedColorPosition.X, _selectedColorPosition.Y].Glyph = 4;
                    IsDirty = true;

                    Parent.Host.CaptureControl(this);
                }
            }
        }