void MSPulldownMenu::right(void) { MSMenuItem *ni, *mi=menuItem(selectedItem()); if (mi!=0&&mi->cascade()==MSTrue) { mi->arm(); mi->grab(); } else if ((ni=nextRightItem())!=0&&(mi==0||(ni!=mi&&ni->item()>mi->item()))) { undrawSelectedItem(); selectedItem(ni->item()); drawSelectedItem(); if (ni->cascade()==MSTrue) { ni->arm(); ni->grab(); } } else if (item()!=0) { item()->menu()->grabAndSelect(); item()->menu()->right(); } }
void MSPulldownMenu::left(void) { MSMenuItem *ni,*mi=menuItem(selectedItem()); if ((ni=nextLeftItem())!=0&&(mi==0||(ni!=mi&&ni->item()<mi->item()))) { undrawSelectedItem(); selectedItem(ni->item()); drawSelectedItem(); } else if (item()!=0) { item()->menu()->grabAndSelect(); item()->menu()->left(); } }
void GUIFormSpecMenu::drawMenu() { if(m_form_src){ std::string newform = m_form_src->getForm(); if(newform != m_formspec_string){ m_formspec_string = newform; regenerateGui(m_screensize_old); } } updateSelectedItem(); gui::IGUISkin* skin = Environment->getSkin(); if (!skin) return; video::IVideoDriver* driver = Environment->getVideoDriver(); video::SColor bgcolor(140,0,0,0); driver->draw2DRectangle(bgcolor, AbsoluteRect, &AbsoluteClippingRect); m_tooltip_element->setVisible(false); /* Draw items Phase 0: Item slot rectangles Phase 1: Item images; prepare tooltip */ for(int phase=0; phase<=1; phase++) for(u32 i=0; i<m_inventorylists.size(); i++) { drawList(m_inventorylists[i], phase); } for(u32 i=0; i<m_images.size(); i++) { const ImageDrawSpec &spec = m_images[i]; video::ITexture *texture = m_gamedef->tsrc()->getTextureRaw(spec.name); // Image size on screen core::rect<s32> imgrect(0, 0, spec.geom.X, spec.geom.Y); // Image rectangle on screen core::rect<s32> rect = imgrect + spec.pos; const video::SColor color(255,255,255,255); const video::SColor colors[] = {color,color,color,color}; driver->draw2DImage(texture, rect, core::rect<s32>(core::position2d<s32>(0,0), core::dimension2di(texture->getOriginalSize())), NULL/*&AbsoluteClippingRect*/, colors, true); } /* Draw dragged item stack */ drawSelectedItem(); /* Call base class */ gui::IGUIElement::draw(); }