From f2c10902b3af2dec11aa429682ee9513f82ce28d Mon Sep 17 00:00:00 2001 From: Sean Smith Date: Sat, 31 Aug 2019 19:02:56 -0400 Subject: [PATCH] Fix delete/close of todoist Currently, when deleting, we jump 2 positions, since we are calling next. However, the next item becomes the current selected position, so handle better Properly set selected in some edge cases where we may go from a list to 0 --- modules/todoist/widget.go | 11 ++++++----- view/scrollable_widget.go | 9 +++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/modules/todoist/widget.go b/modules/todoist/widget.go index 8a93369f..bd197d19 100644 --- a/modules/todoist/widget.go +++ b/modules/todoist/widget.go @@ -104,25 +104,26 @@ func (widget *Widget) Unselect() { // Close closes the currently-selected task in the currently-selected project func (w *Widget) Close() { w.CurrentProject().closeSelectedTask() + w.SetItemCount(len(w.CurrentProject().tasks)) if w.CurrentProject().isLast() { w.Prev() return } - - w.Next() + w.CurrentProject().index = w.Selected + w.RenderFunction() } // Delete deletes the currently-selected task in the currently-selected project func (w *Widget) Delete() { w.CurrentProject().deleteSelectedTask() + w.SetItemCount(len(w.CurrentProject().tasks)) if w.CurrentProject().isLast() { w.Prev() - return } - - w.Next() + w.CurrentProject().index = w.Selected + w.RenderFunction() } /* -------------------- Unexported Functions -------------------- */ diff --git a/view/scrollable_widget.go b/view/scrollable_widget.go index e981b666..e4bac1d9 100644 --- a/view/scrollable_widget.go +++ b/view/scrollable_widget.go @@ -35,6 +35,9 @@ func (widget *ScrollableWidget) SetRenderFunction(displayFunc func()) { func (widget *ScrollableWidget) SetItemCount(items int) { widget.maxItems = items + if items == 0 { + widget.Selected = -1 + } } func (widget *ScrollableWidget) GetSelected() int { @@ -54,6 +57,9 @@ func (widget *ScrollableWidget) Next() { if widget.Selected >= widget.maxItems { widget.Selected = 0 } + if widget.maxItems == 0 { + widget.Selected = -1 + } widget.RenderFunction() } @@ -62,6 +68,9 @@ func (widget *ScrollableWidget) Prev() { if widget.Selected < 0 { widget.Selected = widget.maxItems - 1 } + if widget.maxItems == 0 { + widget.Selected = -1 + } widget.RenderFunction() }