disable timed display refresh while scrolling

This commit is contained in:
Bradley Cicenas 2017-06-12 13:52:45 +00:00
parent a48a9031cc
commit 671c944272
2 changed files with 15 additions and 5 deletions

View File

@ -14,9 +14,10 @@ var enabledConnectors = map[string]func() connector.Connector{
} }
type GridCursor struct { type GridCursor struct {
selectedID string // id of currently selected container selectedID string // id of currently selected container
filtered container.Containers filtered container.Containers
cSource connector.Connector cSource connector.Connector
isScrolling bool // toggled when actively scrolling
} }
func NewGridCursor(connector string) *GridCursor { func NewGridCursor(connector string) *GridCursor {
@ -109,6 +110,9 @@ func (gc *GridCursor) ScrollPage() {
} }
func (gc *GridCursor) Up() { func (gc *GridCursor) Up() {
gc.isScrolling = true
defer func() { gc.isScrolling = false }()
idx := gc.Idx() idx := gc.Idx()
if idx <= 0 { // already at top if idx <= 0 { // already at top
return return
@ -125,6 +129,9 @@ func (gc *GridCursor) Up() {
} }
func (gc *GridCursor) Down() { func (gc *GridCursor) Down() {
gc.isScrolling = true
defer func() { gc.isScrolling = false }()
idx := gc.Idx() idx := gc.Idx()
if idx >= gc.Len()-1 { // already at bottom if idx >= gc.Len()-1 { // already at bottom
return return

View File

@ -62,8 +62,11 @@ func ExpandView(c *container.Container) {
} }
func RefreshDisplay() { func RefreshDisplay() {
needsClear := cursor.RefreshContainers() // skip display refresh during scroll
RedrawRows(needsClear) if !cursor.isScrolling {
needsClear := cursor.RefreshContainers()
RedrawRows(needsClear)
}
} }
func Display() bool { func Display() bool {