public override MyGuiControlBase HandleInput() { var captureControl = base.HandleInput(); if (captureControl == null) { captureControl = HandleInputElements(); } if (captureControl == null && HasFocus) { captureControl = m_propertyControl.HandleInput(); } return(captureControl); }
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); }