bool CGUIWindow::OnAction(const CAction &action) { if (action.IsMouse() || action.IsGesture()) return EVENT_RESULT_UNHANDLED != OnMouseAction(action); CGUIControl *focusedControl = GetFocusedControl(); if (focusedControl) { if (focusedControl->OnAction(action)) return true; } else { // no control has focus? // set focus to the default control then CGUIMessage msg(GUI_MSG_SETFOCUS, GetID(), m_defaultControl); OnMessage(msg); } // default implementations if (action.GetID() == ACTION_NAV_BACK || action.GetID() == ACTION_PREVIOUS_MENU) return OnBack(action.GetID()); return false; }
bool CGUIWindow::OnAction(const CAction &action) { if (action.IsMouse() || action.IsGesture()) return EVENT_RESULT_UNHANDLED != OnMouseAction(action); CGUIControl *focusedControl = GetFocusedControl(); if (focusedControl) { if (focusedControl->OnAction(action)) return true; } else { // no control has focus? // set focus to the default control then CGUIMessage msg(GUI_MSG_SETFOCUS, GetID(), m_defaultControl); OnMessage(msg); } // default implementations switch(action.GetID()) { case ACTION_NAV_BACK: case ACTION_PREVIOUS_MENU: return OnBack(action.GetID()); case ACTION_SHOW_INFO: return OnInfo(action.GetID()); case ACTION_MENU: if (m_menuControlID > 0) { CGUIControl *menu = GetControl(m_menuControlID); if (menu) { int focusControlId; if (!menu->HasFocus()) { // focus the menu control focusControlId = m_menuControlID; // To support a toggle behaviour we store the last focused control id // to restore (focus) this control if the menu control has the focus // while you press the menu button again. m_menuLastFocusedControlID = GetFocusedControlID(); } else { // restore the last focused control or if not exists use the default control focusControlId = m_menuLastFocusedControlID > 0 ? m_menuLastFocusedControlID : m_defaultControl; } CGUIMessage msg = CGUIMessage(GUI_MSG_SETFOCUS, GetID(), focusControlId); return OnMessage(msg); } } break; } return false; }
bool CGUIWindow::OnAction(const CAction &action) { if (action.IsMouse() || action.IsGesture()) return EVENT_RESULT_UNHANDLED != OnMouseAction(action); CGUIControl *focusedControl = GetFocusedControl(); if (focusedControl) return focusedControl->OnAction(action); // no control has focus? // set focus to the default control then CGUIMessage msg(GUI_MSG_SETFOCUS, GetID(), m_defaultControl); OnMessage(msg); return false; }