Merge pull request #3531 from bobrippling/fix/promenu-scroller

promenu: fix behaviour with scroller & image strings
pull/3533/head
Rob Pilling 2024-08-13 07:23:03 +01:00 committed by GitHub
commit c922e870d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 4 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);
@ -76,10 +79,11 @@ E.showMenu = function (items) {
v = ""; v = "";
} }
{ {
if (name.length >= 17 - v.length && typeof item === "object") { var vplain = v.indexOf("\0") < 0;
if (vplain && name.length >= 17 - v.length && typeof item === "object") {
g.drawString(name.substring(0, 12 - v.length) + "...", x + 3.7, iy + 2.7); g.drawString(name.substring(0, 12 - v.length) + "...", x + 3.7, iy + 2.7);
} }
else if (name.length >= 15) { else if (vplain && name.length >= 15) {
g.drawString(name.substring(0, 15) + "...", x + 3.7, iy + 2.7); g.drawString(name.substring(0, 15) + "...", x + 3.7, iy + 2.7);
} }
else { else {
@ -138,9 +142,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);
@ -83,9 +87,10 @@ E.showMenu = (items?: Menu): MenuInstance => {
} }
/*???*/{ /*???*/{
if(name.length >= 17 - v.length && typeof item === "object"){ const vplain = v.indexOf("\0") < 0;
if(vplain && name.length >= 17 - v.length && typeof item === "object"){
g.drawString(name.substring(0, 12 - v.length) + "...", x + 3.7, iy + 2.7); g.drawString(name.substring(0, 12 - v.length) + "...", x + 3.7, iy + 2.7);
}else if(name.length >= 15){ }else if(vplain && name.length >= 15){
g.drawString(name.substring(0, 15) + "...", x + 3.7, iy + 2.7); g.drawString(name.substring(0, 15) + "...", x + 3.7, iy + 2.7);
}else{ }else{
g.drawString(name, x + 3.7, iy + 2.7); g.drawString(name, x + 3.7, iy + 2.7);
@ -156,9 +161,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();