Make automatic selection of todo items smarter

* Automatically focus new todo items after adding them to the list.
* Keep selection when an item is moved (e.g. by changing its priority).
* Focus the next item in the list when an item is removed.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
Lukas Fleischer
2016-01-18 19:19:18 +01:00
parent 25a049951c
commit df1bc59812
3 changed files with 28 additions and 15 deletions

View File

@@ -167,19 +167,26 @@ void todo_flag(struct todo *t)
* Returns the position into the linked list corresponding to the
* given todo item.
*/
int todo_get_position(struct todo *needle)
int todo_get_position(struct todo *needle, int skip_completed)
{
llist_item_t *i;
int n = 0;
LLIST_FOREACH(&todolist, i) {
if (LLIST_TS_GET_DATA(i) == needle)
return n;
n++;
if (skip_completed) {
LLIST_FIND_FOREACH(&todolist, NULL, todo_is_uncompleted, i) {
if (LLIST_TS_GET_DATA(i) == needle)
return n;
n++;
}
} else {
LLIST_FOREACH(&todolist, i) {
if (LLIST_TS_GET_DATA(i) == needle)
return n;
n++;
}
}
EXIT(_("todo not found"));
return -1; /* avoid compiler warnings */
return -1;
}
/* Attach a note to a todo */