From 736b9f0433ad76d2867bd2d37401c1cc382d5b42 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Mon, 11 Mar 2024 08:58:41 +0000 Subject: [PATCH] clock_info: permit focus/blur to cancel a redraw --- apps/clock_info/lib.js | 15 +++++++-------- typescript/types/clock_info.d.ts | 4 ++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/apps/clock_info/lib.js b/apps/clock_info/lib.js index 513d946ac..ff7340ec0 100644 --- a/apps/clock_info/lib.js +++ b/apps/clock_info/lib.js @@ -287,22 +287,21 @@ exports.addInteractive = function(menu, options) { const blur = () => { options.focus=false; delete Bangle.CLKINFO_FOCUS; - options.redraw(); const itm = menu[options.menuA].items[options.menuB]; - if (itm.blur) itm.blur(options); + let redraw = true; + if (itm.blur && itm.blur(options) === false) + redraw = false; + if (redraw) options.redraw(); }; const focus = (redraw) => { - let shown = false; if (!options.focus) { options.focus=true; Bangle.CLKINFO_FOCUS=true; - shown = true; + const itm = menu[options.menuA].items[options.menuB]; + if (itm.focus && itm.focus(options) === false) + redraw = false; } if (redraw) options.redraw(); - if (shown) { - const itm = menu[options.menuA].items[options.menuB]; - if (itm.focus) itm.focus(options); - } }; let touchHandler, lockHandler; if (options.x!==undefined && options.y!==undefined && options.w && options.h) { diff --git a/typescript/types/clock_info.d.ts b/typescript/types/clock_info.d.ts index 91b8d5b49..7f48cbf0a 100644 --- a/typescript/types/clock_info.d.ts +++ b/typescript/types/clock_info.d.ts @@ -15,8 +15,8 @@ declare module ClockInfo { hide(options: InteractiveOptions): void, on(what: "redraw", cb: () => void): void, // extending from Object run?(options: InteractiveOptions): void, - focus?(options: InteractiveOptions): void, - blur?(options: InteractiveOptions): void, + focus?(options: InteractiveOptions): void | false, + blur?(options: InteractiveOptions): void | false, } & ( { hasRange: true,