experiment: more granular scrolling
This commit is contained in:
parent
9c25023a20
commit
faf242c498
|
@ -109,6 +109,10 @@ fn render-menu screen: (addr screen) {
|
|||
draw-text-rightward-from-cursor screen, " next page ", width, 0xf/fg, 0/bg
|
||||
draw-text-rightward-from-cursor screen, " ^b ", width, 0/fg 0xf/bg
|
||||
draw-text-rightward-from-cursor screen, " previous page ", width, 0xf/fg, 0/bg
|
||||
draw-text-rightward-from-cursor screen, " ^n ", width, 0/fg 0xf/bg
|
||||
draw-text-rightward-from-cursor screen, " next (older) item ", width, 0xf/fg, 0/bg
|
||||
draw-text-rightward-from-cursor screen, " ^p ", width, 0/fg 0xf/bg
|
||||
draw-text-rightward-from-cursor screen, " previous (more recent) item ", width, 0xf/fg, 0/bg
|
||||
}
|
||||
|
||||
fn render-item screen: (addr screen), _item: (addr item), _users: (addr array user), y: int, screen-height: int -> _/ecx: int {
|
||||
|
@ -173,6 +177,18 @@ fn render-item screen: (addr screen), _item: (addr item), _users: (addr array us
|
|||
}
|
||||
|
||||
fn update-environment env: (addr environment), key: byte, items: (addr item-list) {
|
||||
{
|
||||
compare key, 0xe/ctrl-n
|
||||
break-if-!=
|
||||
next-item env, items
|
||||
return
|
||||
}
|
||||
{
|
||||
compare key, 0x10/ctrl-p
|
||||
break-if-!=
|
||||
previous-item env, items
|
||||
return
|
||||
}
|
||||
{
|
||||
compare key, 6/ctrl-f
|
||||
break-if-!=
|
||||
|
@ -187,6 +203,25 @@ fn update-environment env: (addr environment), key: byte, items: (addr item-list
|
|||
}
|
||||
}
|
||||
|
||||
fn next-item _env: (addr environment), _items: (addr item-list) {
|
||||
var env/edi: (addr environment) <- copy _env
|
||||
var dest/eax: (addr int) <- get env, item-index
|
||||
compare *dest, 0
|
||||
break-if-<=
|
||||
decrement *dest
|
||||
}
|
||||
|
||||
fn previous-item _env: (addr environment), _items: (addr item-list) {
|
||||
var env/edi: (addr environment) <- copy _env
|
||||
var items/esi: (addr item-list) <- copy _items
|
||||
var newest-item-index-a/ecx: (addr int) <- get items, newest
|
||||
var newest-item-index/ecx: int <- copy *newest-item-index-a
|
||||
var dest/eax: (addr int) <- get env, item-index
|
||||
compare *dest, newest-item-index
|
||||
break-if->=
|
||||
increment *dest
|
||||
}
|
||||
|
||||
fn page-down _env: (addr environment), _items: (addr item-list) {
|
||||
var env/edi: (addr environment) <- copy _env
|
||||
var items/esi: (addr item-list) <- copy _items
|
||||
|
|
Loading…
Reference in New Issue