promenu: register swipe as part of setUI

... for removing later, e.g. when a submenu comes along
master
Rob Pilling 2024-05-14 21:52:58 +01:00
parent 832306f4db
commit dd0fd23af1
2 changed files with 15 additions and 6 deletions

View File

@ -150,16 +150,21 @@ E.showMenu = function (items) {
else if (backItem && "back" in backItem) else if (backItem && "back" in backItem)
back = backItem.back; back = backItem.back;
} }
var onSwipe;
if (typeof back === "function") { if (typeof back === "function") {
var back_1 = back; var back_1 = back;
Bangle.on('swipe', function (lr, _ud) { onSwipe = function (lr) {
if (lr < 0) if (lr < 0)
back_1(); back_1();
}); };
Bangle.on('swipe', onSwipe);
} }
Bangle.setUI({ Bangle.setUI({
mode: "updown", mode: "updown",
back: back, back: back,
remove: function () {
Bangle.removeListener("swipe", onSwipe);
},
}, function (dir) { }, function (dir) {
if (dir) if (dir)
l.move(dir); l.move(dir);

View File

@ -170,17 +170,21 @@ type ActualMenuItem = Exclude<Menu["..."], MenuOptions | undefined>;
else if (backItem && "back" in backItem) else if (backItem && "back" in backItem)
back = backItem.back; back = backItem.back;
} }
let onSwipe: SwipeCallback | undefined;
if (typeof back === "function") { if (typeof back === "function") {
const back_ = back; const back_ = back;
Bangle.on('swipe', (lr, _ud) => { onSwipe = (lr/*, ud*/) => {
if (lr < 0) back_(); if (lr < 0) back_();
}) };
Bangle.on('swipe', onSwipe);
} }
Bangle.setUI( Bangle.setUI({
{
mode: "updown", mode: "updown",
back, back,
remove: () => {
Bangle.removeListener("swipe", onSwipe);
},
} as SetUIArg<"updown">, } as SetUIArg<"updown">,
dir => { dir => {
if (dir) l.move(dir); if (dir) l.move(dir);