//! returns true, if an element was highligted bool CGUIContextMenu::highlight(const core::position2d<s32>& p, bool canOpenSubMenu) { if (!isEnabled()) { return false; } // get number of open submenu s32 openmenu = -1; s32 i; for (i=0; i<(s32)Items.size(); ++i) if (Items[i].Enabled && Items[i].SubMenu && Items[i].SubMenu->isVisible()) { openmenu = i; break; } // delegate highlight operation to submenu if (openmenu != -1) { if (Items[openmenu].Enabled && Items[openmenu].SubMenu->highlight(p, canOpenSubMenu)) { HighLighted = openmenu; ChangeTime = os::Timer::getTime(); return true; } } // highlight myself for (i=0; i<(s32)Items.size(); ++i) { if (Items[i].Enabled && getHRect(Items[i], AbsoluteRect).isPointInside(p)) { HighLighted = i; ChangeTime = os::Timer::getTime(); // make submenus visible/invisible for (s32 j=0; j<(s32)Items.size(); ++j) if (Items[j].SubMenu) { if ( j == i && canOpenSubMenu && Items[j].Enabled ) Items[j].SubMenu->setVisible(true); else if ( j != i ) Items[j].SubMenu->setVisible(false); } return true; } } HighLighted = openmenu; return false; }
//! returns true, if an element was highligted bool CGUIContextMenu::highlight(core::position2d<s32> p) { // get number of open submenu s32 openmenu = -1; s32 i; for (i=0; i<(s32)Items.size(); ++i) if (Items[i].SubMenu && Items[i].SubMenu->isVisible()) { openmenu = i; break; } // delegate highlight operation to submenu if (openmenu != -1) { if (Items[openmenu].SubMenu->highlight(p)) { HighLighted = openmenu; return true; } } // highlight myself for (i=0; i<(s32)Items.size(); ++i) if (getHRect(Items[i], AbsoluteRect).isPointInside(p)) { HighLighted = i; // make submenus visible/invisible for (s32 j=0; j<(s32)Items.size(); ++j) if (Items[j].SubMenu) Items[j].SubMenu->setVisible(j == i); return true; } HighLighted = openmenu; return false; }
//! Gets drawing rect of Item core::rect<s32> CGUIMenu::getRect(const SItem& i, const core::rect<s32>& absolute) const { return getHRect(i, absolute); }
//! Gets drawing rect of Item rect<SINT32> CGUIMenu::getRect(const SItem& i, const rect<SINT32>& absolute) const { return getHRect(i, absolute); }