promenu: don't show "..." if the string isn't truncated

pull/3614/head
Rob Pilling 2024-09-23 18:26:22 +01:00
parent d1de2fa67c
commit 7c2f191fa7
4 changed files with 35 additions and 18 deletions

View File

@ -10,3 +10,4 @@
0.06: Fix lower bounding of numeric values 0.06: Fix lower bounding of numeric values
0.07: Fix bug with alarms app (scroller) and correctly show images 0.07: Fix bug with alarms app (scroller) and correctly show images
0.08: Fix bug with modifying menu - allows hadash to save scroll positions 0.08: Fix bug with modifying menu - allows hadash to save scroll positions
0.09: Don't show "..." if a string isn't truncated (i.e. scrolled)

View File

@ -43,17 +43,21 @@ E.showMenu = function (items) {
.setColor(hl ? g.theme.fgH : g.theme.fg) .setColor(hl ? g.theme.fgH : g.theme.fg)
.setFontAlign(-1, -1); .setFontAlign(-1, -1);
var vplain = v.indexOf("\0") < 0; var vplain = v.indexOf("\0") < 0;
var truncated = true; var truncated = false;
if (vplain && name.length >= 17 - v.length && typeof item === "object") { var drawn = false;
g.drawString(name.substring(nameScroll, nameScroll + 12 - v.length) + "...", x + 3.7, y + 2.7); if (vplain) {
var isFunc = typeof item === "function";
var lim = isFunc ? 15 : 17 - v.length;
if (name.length >= lim) {
var len = isFunc ? 15 : 12 - v.length;
var dots = name.length - nameScroll > len ? "..." : "";
g.drawString(name.substring(nameScroll, nameScroll + len) + dots, x + 3.7, y + 2.7);
drawn = true;
truncated = true;
}
} }
else if (vplain && name.length >= 15) { if (!drawn)
g.drawString(name.substring(nameScroll, nameScroll + 15) + "...", x + 3.7, y + 2.7);
}
else {
g.drawString(name, x + 3.7, y + 2.7); g.drawString(name, x + 3.7, y + 2.7);
truncated = false;
}
var xo = x2; var xo = x2;
if (selectEdit && idx === selected) { if (selectEdit && idx === selected) {
xo -= 24 + 1; xo -= 24 + 1;

View File

@ -64,15 +64,27 @@ E.showMenu = (items?: Menu): MenuInstance => {
.setFontAlign(-1, -1); .setFontAlign(-1, -1);
const vplain = v.indexOf("\0") < 0; const vplain = v.indexOf("\0") < 0;
let truncated = true; let truncated = false;
if(vplain && name.length >= 17 - v.length && typeof item === "object"){ let drawn = false;
g.drawString(name.substring(nameScroll, nameScroll + 12 - v.length) + "...", x + 3.7, y + 2.7); if(vplain){
}else if(vplain && name.length >= 15){ const isFunc = typeof item === "function";
g.drawString(name.substring(nameScroll, nameScroll + 15) + "...", x + 3.7, y + 2.7); const lim = isFunc ? 15 : 17 - v.length;
}else{
g.drawString(name, x + 3.7, y + 2.7); if(name.length >= lim){
truncated = false; const len = isFunc ? 15 : 12 - v.length;
const dots = name.length - nameScroll > len ? "..." : "";
g.drawString(
name.substring(nameScroll, nameScroll + len) + dots,
x + 3.7,
y + 2.7
);
drawn = true;
truncated = true;
}
} }
if(!drawn)
g.drawString(name, x + 3.7, y + 2.7);
let xo = x2; let xo = x2;
if (selectEdit && idx === selected) { if (selectEdit && idx === selected) {

View File

@ -1,7 +1,7 @@
{ {
"id": "promenu", "id": "promenu",
"name": "Pro Menu", "name": "Pro Menu",
"version": "0.08", "version": "0.09",
"description": "Replace the built in menu function. Supports Bangle.js 1 and Bangle.js 2.", "description": "Replace the built in menu function. Supports Bangle.js 1 and Bangle.js 2.",
"icon": "icon.png", "icon": "icon.png",
"type": "bootloader", "type": "bootloader",