pinosaur
/
taskasaur.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
insert/text editing
[taskasaur.git]
/
taskasaur.c
diff --git
a/taskasaur.c
b/taskasaur.c
index
03c3ab4
..
b317c9a
100644
(file)
--- a/
taskasaur.c
+++ b/
taskasaur.c
@@
-17,7
+17,6
@@
int set_selected_menu(BoardMenu* boardmenu, int index);
MenuItem** todolist_to_menuitem(TodoItem** item_list, int list_length);
Menu** make_menus(Board* board, int todolist_length);
MenuItem** todolist_to_menuitem(TodoItem** item_list, int list_length);
Menu** make_menus(Board* board, int todolist_length);
-
int
main(int argc, char** argv)
{
int
main(int argc, char** argv)
{
@@
-74,13
+73,22
@@
main(int argc, char** argv)
case BINDING_DELETE_ITEM:
menu_driver(active_menu, MENU_DELETE);
break;
case BINDING_DELETE_ITEM:
menu_driver(active_menu, MENU_DELETE);
break;
-
+ case BINDING_APPEND_ITEM:
+ menu_driver(active_menu, MENU_APPEND);
+ break;
+ case BINDING_INSERT_ABOVE:
+ menu_driver(active_menu, MENU_INSERT_ABOVE);
+ break;
+ case BINDING_INSERT_BELOW:
+ menu_driver(active_menu, MENU_INSERT_BELOW);
+ break;
}
for (int i = 0; i < boardmenu->menu_count; i++) {
render_menu(boardmenu->menu_list[i]);
}
}
for (int i = 0; i < boardmenu->menu_count; i++) {
render_menu(boardmenu->menu_list[i]);
}
+
}
exit_tscurses();
}
exit_tscurses();
@@
-106,6
+114,7
@@
set_selected_menu(BoardMenu* boardmenu, int index)
{
Menu* old_menu;
Menu* new_menu;
{
Menu* old_menu;
Menu* new_menu;
+ int new_pos;
old_menu = boardmenu->menu_list[boardmenu->selected];
new_menu = boardmenu->menu_list[index];
old_menu = boardmenu->menu_list[boardmenu->selected];
new_menu = boardmenu->menu_list[index];
@@
-113,6
+122,12
@@
set_selected_menu(BoardMenu* boardmenu, int index)
set_menu_focus(old_menu, false);
set_menu_focus(new_menu, true);
set_menu_focus(old_menu, false);
set_menu_focus(new_menu, true);
+ /* also try to jump to a similar position if possible */
+ /* rn theres a bug if old menu is empty */
+ new_pos = (get_selected_item(old_menu) > get_menu_length(new_menu)-1) ?
+ get_menu_length(new_menu)-1 : get_selected_item(old_menu);
+ set_selected_item(new_menu, new_pos);
+
boardmenu->selected = index;
return 0;
boardmenu->selected = index;
return 0;