+ switch (ch) {
+
+ case BINDING_SCROLL_UP:
+ menu_driver(menu, MENU_UP);
+ break;
+ case BINDING_SCROLL_DOWN:
+ menu_driver(menu, MENU_DOWN);
+ break;
+ case BINDING_JUMP_TOP:
+ menu_driver(menu, MENU_TOP);
+ break;
+ case BINDING_JUMP_BOTTOM:
+ menu_driver(menu, MENU_BOTTOM);
+ break;
+ case BINDING_MOVE_ITEM_UP:
+ menu_driver(menu, MENU_MOVE_UP);
+ break;
+ case BINDING_MOVE_ITEM_DOWN:
+ menu_driver(menu, MENU_MOVE_DOWN);
+ break;
+ case BINDING_DELETE_ITEM:
+ menu_driver(menu, MENU_DELETE);
+ break;
+ case BINDING_APPEND_ITEM:
+ menu_driver(menu, MENU_APPEND);
+ break;
+ case BINDING_INSERT_ABOVE:
+ menu_driver(menu, MENU_INSERT_ABOVE);
+ break;
+ case BINDING_INSERT_BELOW:
+ menu_driver(menu, MENU_INSERT_BELOW);
+ break;
+ case BINDING_EDIT_ITEM:
+ menu_driver(menu, MENU_EDIT);
+ break;
+ }
+}
+
+void
+renderstep(BoardMenu* boardmenu)
+{
+ /* render main board menu */
+ if (boardmenu->popup_open == 0) {
+ for (int i = 0; i < boardmenu->menu_count; i++) {
+
+ Menu* curmenu = boardmenu->menu_list[i];
+
+ render_menu(curmenu);
+ }
+
+ /* render popup if it's open */
+ } else {
+
+ // something weird happened, maybe raise error
+ /* if (boradmenu->popupmenu == NULL) return; */