From 5dac7b26240b79fb210db75532ae86c0c77ab81f Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 10 Aug 2024 15:54:12 +0100 Subject: [PATCH 1/2] promenu: return a scroller (fixes alarms app) --- apps/promenu/bootb2.js | 5 +++++ apps/promenu/bootb2.ts | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/apps/promenu/bootb2.js b/apps/promenu/bootb2.js index 9909d2af3..faf989597 100644 --- a/apps/promenu/bootb2.js +++ b/apps/promenu/bootb2.js @@ -28,6 +28,9 @@ E.showMenu = function (items) { y += 22; var lastIdx = 0; var selectEdit = undefined; + var scroller = { + scroll: selected, + }; var l = { draw: function (rowmin, rowmax) { var rows = 0 | Math.min((y2 - y) / fontHeight, menuItems.length); @@ -138,9 +141,11 @@ E.showMenu = function (items) { else { var lastSelected = selected; selected = (selected + dir + menuItems.length) % menuItems.length; + scroller.scroll = selected; l.draw(Math.min(lastSelected, selected), Math.max(lastSelected, selected)); } }, + scroller: scroller, }; l.draw(); var back = options.back; diff --git a/apps/promenu/bootb2.ts b/apps/promenu/bootb2.ts index 9342d2ec9..ac89f7033 100644 --- a/apps/promenu/bootb2.ts +++ b/apps/promenu/bootb2.ts @@ -35,6 +35,10 @@ E.showMenu = (items?: Menu): MenuInstance => { let lastIdx = 0; let selectEdit: undefined | ActualMenuItem = undefined; + const scroller = { + scroll: selected, + }; + const l = { draw: (rowmin?: number, rowmax?: number) => { let rows = 0|Math.min((y2 - y) / fontHeight, menuItems.length); @@ -156,9 +160,11 @@ E.showMenu = (items?: Menu): MenuInstance => { } else { const lastSelected = selected; selected = (selected + dir + /*keep +ve*/menuItems.length) % menuItems.length; + scroller.scroll = selected; l.draw(Math.min(lastSelected, selected), Math.max(lastSelected, selected)); } }, + scroller, }; l.draw(); From c6d4713f5bd673f2ebc9eb582f27545a102593d7 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 10 Aug 2024 16:19:30 +0100 Subject: [PATCH 2/2] promenu: only calculate offsets for plain (non-image) strings This fixes the alarm app, for example, which shows images within the strings --- apps/promenu/bootb2.js | 5 +++-- apps/promenu/bootb2.ts | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/promenu/bootb2.js b/apps/promenu/bootb2.js index faf989597..434f0c07f 100644 --- a/apps/promenu/bootb2.js +++ b/apps/promenu/bootb2.js @@ -79,10 +79,11 @@ E.showMenu = function (items) { 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); } - else if (name.length >= 15) { + else if (vplain && name.length >= 15) { g.drawString(name.substring(0, 15) + "...", x + 3.7, iy + 2.7); } else { diff --git a/apps/promenu/bootb2.ts b/apps/promenu/bootb2.ts index ac89f7033..11ae56e1b 100644 --- a/apps/promenu/bootb2.ts +++ b/apps/promenu/bootb2.ts @@ -87,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); - }else if(name.length >= 15){ + }else if(vplain && name.length >= 15){ g.drawString(name.substring(0, 15) + "...", x + 3.7, iy + 2.7); }else{ g.drawString(name, x + 3.7, iy + 2.7);