mirror of https://github.com/espruino/BangleApps
widhid: disable (temporarily) if a menu's shown
parent
051b417971
commit
a9affac57e
|
@ -10,9 +10,23 @@
|
|||
var dragging = false;
|
||||
var activeTimeout;
|
||||
var waitForRelease = true;
|
||||
var menuShown = 0;
|
||||
var origShowMenu = E.showMenu;
|
||||
E.showMenu = (function (menu) {
|
||||
menuShown++;
|
||||
var origSetUI = Bangle.setUI;
|
||||
Bangle.setUI = (function (mode, cb) {
|
||||
menuShown--;
|
||||
Bangle.setUI = origSetUI;
|
||||
return origSetUI(mode, cb);
|
||||
});
|
||||
return origShowMenu(menu);
|
||||
});
|
||||
var onSwipe = (function (_lr, ud) {
|
||||
if (Bangle.CLKINFO_FOCUS)
|
||||
return;
|
||||
if (menuShown)
|
||||
return;
|
||||
if (!activeTimeout && ud > 0) {
|
||||
listen();
|
||||
Bangle.buzz(20);
|
||||
|
|
|
@ -12,9 +12,33 @@
|
|||
let dragging = false;
|
||||
let activeTimeout: number | undefined;
|
||||
let waitForRelease = true;
|
||||
let menuShown = 0;
|
||||
|
||||
// If the user shows a menu, we want to temporarily disable ourselves
|
||||
// We can detect showing of a menu by overriding E.showMenu
|
||||
// to detect hiding of a menu, we hook setUI, since all menus
|
||||
// either show other menus, load() or (eventually) call it
|
||||
// (I hope)
|
||||
//
|
||||
// Alternatively we could watch for when Bangle.dragHandler and
|
||||
// Bangle.swipeHandler get removed from Bangle["#on<event>"]
|
||||
const origShowMenu = E.showMenu;
|
||||
E.showMenu = ((menu: Menu): MenuInstance => {
|
||||
menuShown++;
|
||||
|
||||
const origSetUI = Bangle.setUI;
|
||||
Bangle.setUI = ((mode: unknown, cb: () => void) => {
|
||||
menuShown--;
|
||||
Bangle.setUI = origSetUI;
|
||||
return origSetUI(mode as any, cb);
|
||||
}) as any;
|
||||
|
||||
return origShowMenu(menu);
|
||||
}) as any;
|
||||
|
||||
const onSwipe = ((_lr, ud) => {
|
||||
if((Bangle as BangleExt).CLKINFO_FOCUS) return;
|
||||
if(menuShown) return;
|
||||
|
||||
if(!activeTimeout && ud! > 0){
|
||||
listen();
|
||||
|
|
Loading…
Reference in New Issue