promenu: return a scroller (fixes alarms app)

pull/3531/head
Rob Pilling 2024-08-10 15:54:12 +01:00
parent 3a18309f9a
commit 5dac7b2624
2 changed files with 11 additions and 0 deletions

View File

@ -28,6 +28,9 @@ E.showMenu = function (items) {
y += 22; y += 22;
var lastIdx = 0; var lastIdx = 0;
var selectEdit = undefined; var selectEdit = undefined;
var scroller = {
scroll: selected,
};
var l = { var l = {
draw: function (rowmin, rowmax) { draw: function (rowmin, rowmax) {
var rows = 0 | Math.min((y2 - y) / fontHeight, menuItems.length); var rows = 0 | Math.min((y2 - y) / fontHeight, menuItems.length);
@ -138,9 +141,11 @@ E.showMenu = function (items) {
else { else {
var lastSelected = selected; var lastSelected = selected;
selected = (selected + dir + menuItems.length) % menuItems.length; selected = (selected + dir + menuItems.length) % menuItems.length;
scroller.scroll = selected;
l.draw(Math.min(lastSelected, selected), Math.max(lastSelected, selected)); l.draw(Math.min(lastSelected, selected), Math.max(lastSelected, selected));
} }
}, },
scroller: scroller,
}; };
l.draw(); l.draw();
var back = options.back; var back = options.back;

View File

@ -35,6 +35,10 @@ E.showMenu = (items?: Menu): MenuInstance => {
let lastIdx = 0; let lastIdx = 0;
let selectEdit: undefined | ActualMenuItem = undefined; let selectEdit: undefined | ActualMenuItem = undefined;
const scroller = {
scroll: selected,
};
const l = { const l = {
draw: (rowmin?: number, rowmax?: number) => { draw: (rowmin?: number, rowmax?: number) => {
let rows = 0|Math.min((y2 - y) / fontHeight, menuItems.length); let rows = 0|Math.min((y2 - y) / fontHeight, menuItems.length);
@ -156,9 +160,11 @@ E.showMenu = (items?: Menu): MenuInstance => {
} else { } else {
const lastSelected = selected; const lastSelected = selected;
selected = (selected + dir + /*keep +ve*/menuItems.length) % menuItems.length; selected = (selected + dir + /*keep +ve*/menuItems.length) % menuItems.length;
scroller.scroll = selected;
l.draw(Math.min(lastSelected, selected), Math.max(lastSelected, selected)); l.draw(Math.min(lastSelected, selected), Math.max(lastSelected, selected));
} }
}, },
scroller,
}; };
l.draw(); l.draw();