+ MenuItem** subtask_menuitems;
+ Menu* new_popup_menu;
+ WINDOW* popup_win;
+
+ subtask_menuitems = subtasklist_to_menuitem(itemdata->subtask_list, itemdata->subtask_count);
+ new_popup_menu = create_menu(strdup(""), subtask_menuitems);
+
+ /* popup win */
+ int maxheight, maxwidth;
+ getmaxyx(stdscr, maxheight, maxwidth);
+ popup_win = newwin(
+ maxheight-2*POPUP_BORDER,
+ maxwidth-2*2*POPUP_BORDER,
+ POPUP_BORDER,
+ POPUP_BORDER*2
+ );
+ box(popup_win, 0, 0);
+
+ set_menu_win(new_popup_menu, popup_win);
+ set_menu_focus(new_popup_menu, 1);
+
+ return new_popup_menu;
+}
+
+int
+render_popup_menu(Menu* popup_menu)
+{
+ WINDOW* popup_win;
+
+ popup_win = get_menu_win(popup_menu);
+ wclear(popup_win);
+
+ box(popup_win, 0, 0);
+
+ render_menu(popup_menu);
+
+ wrefresh(popup_win);
+
+ return 0;
+}
+
+/* this is copy paste of other, prob abstract */
+MenuItem**
+subtasklist_to_menuitem(SubTask** subtask_list, int list_length)
+{
+ MenuItem** items;
+
+ items = malloc((list_length+1)*sizeof(MenuItem*));
+ for (int i = 0; i < list_length; i++) {
+ MenuItem* new_menuitem;
+ new_menuitem = create_menuitem(subtask_list[i]->subtask_name);
+ /* using same struct, careful if it gets freed */
+ set_menuitem_userdata(new_menuitem, subtask_list[i]);
+
+ items[i] = new_menuitem;
+ }
+
+ items[list_length] = 0; //null terminate
+ return items;