static int position_proc(struct menu_item *item, enum menu_callback_reason reason, void *data) { struct member_data *member_data = data; struct menu_item *watch = menu_userwatch_watch(member_data->userwatch); if (!member_data->position_set) { member_data->position_set = 1; member_data->x = watch->pxoffset; member_data->y = watch->pyoffset; } int dist = 2; if (input_pad() & BUTTON_Z) dist *= 2; switch (reason) { case MENU_CALLBACK_ACTIVATE: input_reserve(BUTTON_Z); break; case MENU_CALLBACK_DEACTIVATE: input_free(BUTTON_Z); break; case MENU_CALLBACK_NAV_UP: member_data->y -= dist; break; case MENU_CALLBACK_NAV_DOWN: member_data->y += dist; break; case MENU_CALLBACK_NAV_LEFT: member_data->x -= dist; break; case MENU_CALLBACK_NAV_RIGHT: member_data->x += dist; break; default: break; } watch->pxoffset = member_data->x; watch->pyoffset = member_data->y; return 0; }
static int enter_proc(struct menu_item *item, enum menu_switch_reason reason) { input_reserve(BUTTON_D_UP | BUTTON_D_DOWN | BUTTON_D_LEFT | BUTTON_D_RIGHT | BUTTON_Z); input_bind_set_disable(COMMAND_PREVROOM, 0); input_bind_set_disable(COMMAND_NEXTROOM, 0); return 0; }