public override MyGuiControlBase HandleInput()
        {
            var captureControl = base.HandleInput();

            if (captureControl == null)
            {
                captureControl = HandleInputElements();
            }

            if (captureControl == null && HasFocus)
            {
                captureControl = m_propertyControl.HandleInput();
            }

            return(captureControl);
        }
Esempio n. 2
0
        private bool HandleControlsInput(bool receivedFocusInThisUpdate)
        {
            MyGuiControlBase inputHandledBySomeControl = null;

            if (m_lastHandlingControl != null && m_lastHandlingControl.Visible)
            {
                if (m_lastHandlingControl.HandleInput() != null)
                {
                    inputHandledBySomeControl = m_lastHandlingControl;
                }
            }

            if (inputHandledBySomeControl == null && m_listboxDragAndDropHandlingNow != null)
            {
                if (m_listboxDragAndDropHandlingNow.HandleInput() != null)
                {
                    inputHandledBySomeControl = m_listboxDragAndDropHandlingNow;
                }
            }

            if (inputHandledBySomeControl == null && m_comboboxHandlingNow != null)
            {
                if (m_comboboxHandlingNow.HandleInput() != null)
                {
                    inputHandledBySomeControl = m_comboboxHandlingNow;
                }
            }

            // Check focused screen first
            MyGuiControlBase mouseOverControl = null;

            if (inputHandledBySomeControl == null)
            {
                var visibleControls = Controls.GetVisibleControls();
                for (int i = 0; i < visibleControls.Count; i++)
                {
                    MyGuiControlBase control = visibleControls[i];
                    if (control != m_comboboxHandlingNow && control != m_listboxDragAndDropHandlingNow && control.CheckMouseOver())
                    {
                        mouseOverControl          = control;
                        inputHandledBySomeControl = control.HandleInput();
                        break;
                    }
                }
            }

            //  If opened combobox didn't capture the input, we will try to handle it in remaining controls
            if (inputHandledBySomeControl == null)
            {
                var visibleControls = Controls.GetVisibleControls();
                for (int i = visibleControls.Count - 1; i >= 0; --i)
                {
                    MyGuiControlBase control = visibleControls[i];
                    if (control != m_comboboxHandlingNow && control != m_listboxDragAndDropHandlingNow && control != mouseOverControl)
                    {
                        inputHandledBySomeControl = control.HandleInput();
                        if (inputHandledBySomeControl != null)
                        {
                            break;
                        }
                    }
                }
            }

            if (inputHandledBySomeControl == null)
            {
                foreach (var element in Elements)
                {
                    if (!element.Visible || !element.CanHaveFocus)
                    {
                        continue;
                    }

                    inputHandledBySomeControl = element.HandleInput();
                    if (inputHandledBySomeControl != null)
                    {
                        break;
                    }
                }
            }

            if (inputHandledBySomeControl != null)
            {
                FocusedControl = inputHandledBySomeControl;
            }

            m_lastHandlingControl = inputHandledBySomeControl;

            return(inputHandledBySomeControl != null);
        }