diff --git a/todo/display.go b/todo/display.go index 48de99e3..5d784af5 100644 --- a/todo/display.go +++ b/todo/display.go @@ -11,6 +11,8 @@ const checkWidth = 4 func (widget *Widget) display() { widget.View.Clear() + maxLen := widget.longestLineLen(widget.list.Items) + str := "" for idx, item := range widget.list.Items { foreColor, backColor := "white", "black" @@ -32,8 +34,21 @@ func (widget *Widget) display() { item.Text, ) - str = str + wtf.PadRow((4+len(item.Text)), widget.View) + "\n" + str = str + wtf.PadRow((4+len(item.Text)), (4+maxLen)) + "\n" } fmt.Fprintf(widget.View, "%s", str) } + +// longestLineLen returns the length of the longest todo item line +func (widget *Widget) longestLineLen(items []*Item) int { + maxLen := 0 + + for _, item := range items { + if len(item.Text) > maxLen { + maxLen = len(item.Text) + } + } + + return maxLen +} diff --git a/wtf/utils.go b/wtf/utils.go index d05f1404..78ec3284 100644 --- a/wtf/utils.go +++ b/wtf/utils.go @@ -83,10 +83,8 @@ func OpenFile(path string) { // PadRow returns a padding for a row to make it the full width of the containing widget. // Useful for ensurig row highlighting spans the full width (I suspect tcell has a better // way to do this, but I haven't yet found it) -func PadRow(offset int, view *tview.TextView) string { - _, _, w, _ := view.GetInnerRect() - - padSize := w - offset +func PadRow(offset int, max int) string { + padSize := max - offset if padSize < 0 { padSize = 0 }