diff --git a/apps/messagesoverlay/ChangeLog b/apps/messagesoverlay/ChangeLog index da98bfbce..d557bc5e1 100644 --- a/apps/messagesoverlay/ChangeLog +++ b/apps/messagesoverlay/ChangeLog @@ -1 +1,2 @@ -0.01: Initial fork from messages_light \ No newline at end of file +0.01: Initial fork from messages_light +0.02: Fix touch/drag/swipe handlers not being restored correctly if a message is removed diff --git a/apps/messagesoverlay/lib.js b/apps/messagesoverlay/lib.js index cc6b63176..5c0f50f1c 100644 --- a/apps/messagesoverlay/lib.js +++ b/apps/messagesoverlay/lib.js @@ -389,19 +389,17 @@ let getTouchHandler = function(ovr){ }; }; -let touchHandler; -let swipeHandler; - let restoreHandler = function(event){ - if (backup[event]){ - Bangle["#on" + event]=backup[event]; - backup[event] = undefined; - } + LOG("Restore", event, backup[event]); + Bangle.removeAllListeners(event); + Bangle["#on" + event]=backup[event]; + backup[event] = undefined; }; let backupHandler = function(event){ - if (eventQueue.length > 1 && ovr) return; // do not backup, overlay is already up + if (backupDone) return; // do not backup, overlay is already up backup[event] = Bangle["#on" + event]; + LOG("Backed up", backup[event]); Bangle.removeAllListeners(event); }; @@ -414,21 +412,16 @@ let cleanup = function(){ restoreHandler("swipe"); restoreHandler("drag"); - if (touchHandler) { - Bangle.removeListener("touch", touchHandler); - touchHandler = undefined; - } - if (swipeHandler) { - Bangle.removeListener("swipe", swipeHandler); - swipeHandler = undefined; - } Bangle.setLCDOverlay(); + backupDone = false; ovr = undefined; quiet = undefined; }; let backup = {}; +let backupDone = false; + let main = function(ovr, event) { LOG("Main", event, settings); @@ -441,13 +434,9 @@ let main = function(ovr, event) { backupHandler("touch"); backupHandler("swipe"); backupHandler("drag"); - - if (touchHandler) Bangle.removeListener("touch",touchHandler); - if (swipeHandler) Bangle.removeListener("swipe",swipeHandler); - touchHandler = getTouchHandler(ovr); - swipeHandler = getSwipeHandler(ovr); - Bangle.on('touch', touchHandler); - Bangle.on('swipe', swipeHandler); + backupDone=true; + Bangle.on('touch', getTouchHandler(ovr)); + Bangle.on('swipe', getSwipeHandler(ovr)); if (event !== undefined){ drawBorder(ovr); diff --git a/apps/messagesoverlay/metadata.json b/apps/messagesoverlay/metadata.json index 9efe95d26..9fe5befe5 100644 --- a/apps/messagesoverlay/metadata.json +++ b/apps/messagesoverlay/metadata.json @@ -1,7 +1,7 @@ { "id": "messagesoverlay", "name": "Messages Overlay", - "version": "0.01", + "version": "0.02", "description": "An overlay based implementation of a messages UI (display notifications from iOS and Gadgetbridge/Android)", "icon": "app.png", "type": "bootloader",