From a667fc8061886ca56db6b5e8586cb1719da5e30d Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Mon, 11 Mar 2024 08:24:45 +0000 Subject: [PATCH] clock_info: factor out focus/defocus --- apps/clock_info/lib.js | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/apps/clock_info/lib.js b/apps/clock_info/lib.js index e6c9eb27f..a35d7074e 100644 --- a/apps/clock_info/lib.js +++ b/apps/clock_info/lib.js @@ -284,38 +284,39 @@ exports.addInteractive = function(menu, options) { E.stopEventPropagation&&E.stopEventPropagation(); } Bangle.on("swipe",swipeHandler); + const unfocus = () => { + options.focus=false; + delete Bangle.CLKINFO_FOCUS; + options.redraw(); + }; + const focus = (redraw) => { + options.focus=true; + Bangle.CLKINFO_FOCUS=true; + if (redraw) options.redraw(); + }; let touchHandler, lockHandler; if (options.x!==undefined && options.y!==undefined && options.w && options.h) { touchHandler = function(_,e) { if (e.x(options.x+options.w) || e.y>(options.y+options.h)) { - if (options.focus) { - options.focus=false; - delete Bangle.CLKINFO_FOCUS; - options.redraw(); - } + if (options.focus) + unfocus(); return; // outside area } if (!options.focus) { - options.focus=true; // if not focussed, set focus - Bangle.CLKINFO_FOCUS=true; - options.redraw(); + focus(true); } else if (menu[options.menuA].items[options.menuB].run) { Bangle.buzz(100, 0.7); menu[options.menuA].items[options.menuB].run(); // allow tap on an item to run it (eg home assistant) } else { - options.focus=true; - Bangle.CLKINFO_FOCUS=true; + focus(); } }; Bangle.on("touch",touchHandler); if (settings.defocusOnLock) { lockHandler = function() { - if(options.focus) { - options.focus=false; - delete Bangle.CLKINFO_FOCUS; - options.redraw(); - } + if(options.focus) + unfocus(); }; Bangle.on("lock", lockHandler); }