void menu::key_press(SDLKey key) { if (!click_selects_) { switch(key) { case SDLK_UP: move_selection_up(1); break; case SDLK_DOWN: move_selection_down(1); break; case SDLK_PAGEUP: move_selection_up(max_items_onscreen()); break; case SDLK_PAGEDOWN: move_selection_down(max_items_onscreen()); break; case SDLK_HOME: set_selection_pos(0); break; case SDLK_END: set_selection_pos(items_.size() - 1); break; //case SDLK_RETURN: // double_clicked_ = true; // break; default: break; } } if (num_selects_ && key >= SDLK_1 && key <= SDLK_9) set_selection_pos(key - SDLK_1); }
// public function void menu::move_selection_keeping_viewport(size_t id) { if(id < item_pos_.size()) { set_selection_pos(item_pos_[id], true, NO_MOVE_VIEWPORT); } }
void menu::reset_selection() { set_selection_pos(0); }
// public function void menu::move_selection(size_t id) { if(id < item_pos_.size()) { set_selection_pos(item_pos_[id], true, MOVE_VIEWPORT); } }
// private function with control over sound and viewport void menu::move_selection_to(size_t id, bool silent, SELECTION_MOVE_VIEWPORT move_viewport) { if(id < item_pos_.size()) { set_selection_pos(item_pos_[id], silent, move_viewport); } }
void menu::move_selection_down(size_t dep) { size_t nb_items = items_.size(); set_selection_pos(selected_ + dep >= nb_items ? nb_items - 1 : selected_ + dep); }
void menu::move_selection_up(size_t dep) { set_selection_pos(selected_ > dep ? selected_ - dep : 0); }
void menu::reset_selection() { set_selection_pos(0, true); }