diff --git a/ChangeLog b/ChangeLog index b55bdbdf3..586e25b91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ Puck.js: Immediately after flashing new firmware, Puck.js now does a self-test and sets its BLE to PASS or FAIL nRF52: Fix recent regression which stopped reconnection after a bluetooth disconnect (fix #2226) Bangle.js: Include the 'sched' library in installed apps (needed for alarm) (fix #2229) + Bangle.js2: Fix text size on buttons when they are tapped in E.showPrompt 2v14 : Bangle.js2: Fix issue with E.showMenu creating a global `s` variable Bangle.js2: Recheck string wrapping after font change inside E.showMenu diff --git a/libs/js/banglejs/E_showPrompt_Q3.js b/libs/js/banglejs/E_showPrompt_Q3.js index 308d59af1..4069da3c2 100644 --- a/libs/js/banglejs/E_showPrompt_Q3.js +++ b/libs/js/banglejs/E_showPrompt_Q3.js @@ -4,9 +4,9 @@ options.buttons = {"Yes":true,"No":false}; var loc = require("locale"); var btns = Object.keys(options.buttons); - var btnPos = []; - function draw() { - g.reset().setFont("6x8",2).setFontAlign(0,-1); + var btnPos; + function draw(highlightedButton) { + g.reset().setFont("6x8:2").setFontAlign(0,-1); var Y = Bangle.appRect.y; var W = g.getWidth(), H = g.getHeight()-Y, FH=g.getFontHeight(); var titleLines = g.wrapString(options.title, W-2); @@ -35,6 +35,7 @@ btns.forEach(btn=>buttonWidths += buttonPadding+g.stringWidth(loc.translate(btn))); } var x = (W-buttonWidths)/2; + btnPos = []; btns.forEach((btn,idx)=>{ btn = loc.translate(btn); var w = g.stringWidth(btn); @@ -52,7 +53,8 @@ btnPos.push({x1:x-bw-buttonPadding/2, x2:x+bw+buttonPadding/2, y1:y-30, y2:y+30, poly: poly}); - g.setColor(g.theme.bg2).fillPoly(poly).setColor(g.theme.fg2).drawPoly(poly).drawString(btn,x,y+1); + g.setColor(idx===highlightedButton ? g.theme.bgH : g.theme.bg2).fillPoly(poly). + setColor(idx===highlightedButton ? g.theme.fgH : g.theme.fg2).drawPoly(poly).drawString(btn,x,y+1); x += (buttonPadding+w)/2; }); Bangle.setLCDPower(1); // ensure screen is on @@ -68,7 +70,8 @@ btnPos.forEach((b,i)=>{ if (e.x > b.x1 && e.x < b.x2 && e.y > b.y1 && e.y < b.y2) { - g.setColor(g.theme.bgH).fillPoly(b.poly).setColor(g.theme.fgH).drawPoly(b.poly).drawString(btns[i],(b.x1+b.x2)/2,((b.y1+b.y2)/2)+1).flip(); + draw(i); // highlighted button + g.flip(); // write to screen E.showPrompt(); // remove resolve(options.buttons[btns[i]]); } diff --git a/libs/js/banglejs/E_showPrompt_Q3.min.js b/libs/js/banglejs/E_showPrompt_Q3.min.js index d6a523bfc..7b603fc45 100644 --- a/libs/js/banglejs/E_showPrompt_Q3.min.js +++ b/libs/js/banglejs/E_showPrompt_Q3.min.js @@ -1,4 +1,3 @@ -(function(v,f){f||(f={});f.buttons||(f.buttons={Yes:!0,No:!1});var r=require("locale"),m=Object.keys(f.buttons),w=[];g.clearRect(Bangle.appRect);if(!v)return Bangle.setUI(),Promise.resolve();(function(){g.reset().setFont("6x8",2).setFontAlign(0,-1);var k=Bangle.appRect.y,d=g.getWidth(),a=g.getHeight()-k,l=g.getFontHeight(),p=g.wrapString(f.title,d-2),t=g.wrapString(v||"",d-2),b=k+(a+(p.length-t.length)*l)/2-24;f.img&&(a=g.imageMetrics(f.img),g.drawImage(f.img,(d-a.width)/ -2,b-a.height/2),b+=4+a.height/2);p&&g.setColor(g.theme.fgH).setBgColor(g.theme.bgH).clearRect(0,k,d-1,k+4+p.length*l).drawString(p.join("\n"),d/2,k+2);g.setColor(g.theme.fg).setBgColor(g.theme.bg).drawString(t.join("\n"),d/2,b);b+=t.length*l+32;var n=0;g.setFontAlign(0,0);m.forEach(h=>n+=24+g.stringWidth(r.translate(h)));n>d&&(g.setFont("6x8"),n=0,m.forEach(h=>n+=24+g.stringWidth(r.translate(h))));var c=(d-n)/2;m.forEach((h,q)=>{h=r.translate(h);q=g.stringWidth(h);c+=(24+q)/2;var e=6+q/2,u=[c-e,b- -16,c+e,b-16,c+e+4,b-12,c+e+4,b+12,c+e,b+16,c-e,b+16,c-e-4,b+12,c-e-4,b-12,c-e,b-16];w.push({x1:c-e-12,x2:c+e+12,y1:b-30,y2:b+30,poly:u});g.setColor(g.theme.bg2).fillPoly(u).setColor(g.theme.fg2).drawPoly(u).drawString(h,c,b+1);c+=(24+q)/2});Bangle.setLCDPower(1)})();return new Promise(k=>{Bangle.setUI("touch",d=>{w.forEach((a,l)=>{d.x>a.x1&&d.xa.y1&&d.yl+=24+g.stringWidth(t.translate(k)));l>c&&(g.setFont("6x8"),l=0,p.forEach(k=>l+=24+g.stringWidth(t.translate(k))));var b=(c-l)/2;u=[];p.forEach((k,z)=>{k=t.translate(k);var v=g.stringWidth(k);b+=(24+v)/2;var d=6+v/2,w=[b-d,a-16,b+d,a-16,b+d+4,a-12,b+d+4,a+12,b+d,a+16,b-d,a+16,b-d-4,a+12,b-d-4,a-12,b-d,a-16];u.push({x1:b-d-12,x2:b+d+12,y1:a-30,y2:a+30,poly:w});g.setColor(z===m?g.theme.bgH:g.theme.bg2).fillPoly(w).setColor(z===m?g.theme.fgH: +g.theme.fg2).drawPoly(w).drawString(k,b,a+1);b+=(24+v)/2});Bangle.setLCDPower(1)}e||(e={});e.buttons||(e.buttons={Yes:!0,No:!1});var t=require("locale"),p=Object.keys(e.buttons),u;g.clearRect(Bangle.appRect);if(!x)return Bangle.setUI(),Promise.resolve();y();return new Promise(m=>{Bangle.setUI("touch",f=>{u.forEach((c,h)=>{f.x>c.x1&&f.xc.y1&&f.y