Make scrollAmount public and refactor previous scrolling methods
This commit is contained in:
parent
013ef15209
commit
a77ad90f64
@ -78,28 +78,10 @@ func (self *List) Draw(buf *Buffer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *List) ScrollUp() {
|
// ScrollAmount scrolls by amount given. If amount is < 0, then scroll up.
|
||||||
if self.SelectedRow > 0 {
|
|
||||||
self.SelectedRow--
|
|
||||||
if self.SelectedRow < self.topRow {
|
|
||||||
self.topRow--
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *List) ScrollDown() {
|
|
||||||
if self.SelectedRow < uint(len(self.Rows))-1 {
|
|
||||||
self.SelectedRow++
|
|
||||||
if self.SelectedRow-self.topRow > uint(self.Inner.Dy()-1) {
|
|
||||||
self.topRow++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scrolls by amount given. If amount is < 0, then scroll up.
|
|
||||||
// There is no need to set self.topRow, as this will be set automatically when drawn,
|
// There is no need to set self.topRow, as this will be set automatically when drawn,
|
||||||
// since if the selected item is off screen then the topRow variable will change accordingly.
|
// since if the selected item is off screen then the topRow variable will change accordingly.
|
||||||
func (self *List) scrollAmount(amount int) {
|
func (self *List) ScrollAmount(amount int) {
|
||||||
if len(self.Rows)-int(self.SelectedRow) <= amount {
|
if len(self.Rows)-int(self.SelectedRow) <= amount {
|
||||||
self.SelectedRow = uint(len(self.Rows) - 1)
|
self.SelectedRow = uint(len(self.Rows) - 1)
|
||||||
} else if int(self.SelectedRow)+amount < 0 {
|
} else if int(self.SelectedRow)+amount < 0 {
|
||||||
@ -109,27 +91,35 @@ func (self *List) scrollAmount(amount int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *List) ScrollUp() {
|
||||||
|
self.ScrollAmount(-1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *List) ScrollDown() {
|
||||||
|
self.ScrollAmount(1)
|
||||||
|
}
|
||||||
|
|
||||||
// PageUp scrolls up one whole page.
|
// PageUp scrolls up one whole page.
|
||||||
func (self *List) PageUp() {
|
func (self *List) PageUp() {
|
||||||
// If an item is selected below top row, then go to the top row.
|
// If an item is selected below top row, then go to the top row.
|
||||||
if self.SelectedRow > self.topRow {
|
if self.SelectedRow > self.topRow {
|
||||||
self.SelectedRow = self.topRow
|
self.SelectedRow = self.topRow
|
||||||
} else {
|
} else {
|
||||||
self.scrollAmount(-self.Inner.Dy())
|
self.ScrollAmount(-self.Inner.Dy())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PageDown scolls down one whole page.
|
// PageDown scolls down one whole page.
|
||||||
func (self *List) PageDown() {
|
func (self *List) PageDown() {
|
||||||
self.scrollAmount(self.Inner.Dy())
|
self.ScrollAmount(self.Inner.Dy())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *List) HalfPageUp() {
|
func (self *List) HalfPageUp() {
|
||||||
self.scrollAmount(-int(FloorFloat64(float64(self.Inner.Dy())/2)))
|
self.ScrollAmount(-int(FloorFloat64(float64(self.Inner.Dy()) / 2)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *List) HalfPageDown() {
|
func (self *List) HalfPageDown() {
|
||||||
self.scrollAmount(int(FloorFloat64(float64(self.Inner.Dy())/2)))
|
self.ScrollAmount(int(FloorFloat64(float64(self.Inner.Dy()) / 2)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *List) ScrollTop() {
|
func (self *List) ScrollTop() {
|
||||||
|
Loading…
Reference in New Issue
Block a user