code: func (w *Window) focusPrevious() {
  	// it is ok to be negative since that'll focus on the first widget
  	w.focus--
  	if w.focus < 0 {
  		w.focusWidget()
  		return
  	}
  
  	// find previous widget
  	for i := w.focus; i > 0; i-- {
  		widget := w.widgets[i]
  		if !widget.CanFocus() {
  			continue
  		}
  		setCursor(-1, -1) // hide
  		w.focus = i
  		widget.Focus()
  		return
  	}
  
  	// if we get here we need to focus on last focusable widget
  	for i := len(w.widgets) - 1; i > w.focus; i-- {
  		widget := w.widgets[i]
  		if !widget.CanFocus() {
  			continue
  		}
  		setCursor(-1, -1) // hide
  		w.focus = i
  		widget.Focus()
  		return
  	}
  
  	// if we get here it means we found nothing usable and give up
  }
docs: // focusPrevious focuses on the previous available widget.
  // focusPrevious shall be called from queue context.