1
0
Fork 0

Merge pull request #2615 from halemmerich/messageoverlay

messagesoverlay - Fix handlers being restored incorrectly if message removed
master
Gordon Williams 2023-02-28 09:22:33 +00:00 committed by GitHub
commit e19f53895e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 27 deletions

View File

@ -1 +1,2 @@
0.01: Initial fork from messages_light 0.01: Initial fork from messages_light
0.02: Fix touch/drag/swipe handlers not being restored correctly if a message is removed

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -389,19 +389,17 @@ let getTouchHandler = function(ovr){
}; };
}; };
let touchHandler;
let swipeHandler;
let restoreHandler = function(event){ let restoreHandler = function(event){
if (backup[event]){ LOG("Restore", event, backup[event]);
Bangle.removeAllListeners(event);
Bangle["#on" + event]=backup[event]; Bangle["#on" + event]=backup[event];
backup[event] = undefined; backup[event] = undefined;
}
}; };
let backupHandler = function(event){ 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]; backup[event] = Bangle["#on" + event];
LOG("Backed up", backup[event]);
Bangle.removeAllListeners(event); Bangle.removeAllListeners(event);
}; };
@ -414,21 +412,16 @@ let cleanup = function(){
restoreHandler("swipe"); restoreHandler("swipe");
restoreHandler("drag"); restoreHandler("drag");
if (touchHandler) {
Bangle.removeListener("touch", touchHandler);
touchHandler = undefined;
}
if (swipeHandler) {
Bangle.removeListener("swipe", swipeHandler);
swipeHandler = undefined;
}
Bangle.setLCDOverlay(); Bangle.setLCDOverlay();
backupDone = false;
ovr = undefined; ovr = undefined;
quiet = undefined; quiet = undefined;
}; };
let backup = {}; let backup = {};
let backupDone = false;
let main = function(ovr, event) { let main = function(ovr, event) {
LOG("Main", event, settings); LOG("Main", event, settings);
@ -441,13 +434,11 @@ let main = function(ovr, event) {
backupHandler("touch"); backupHandler("touch");
backupHandler("swipe"); backupHandler("swipe");
backupHandler("drag"); backupHandler("drag");
if (!backupDone){
if (touchHandler) Bangle.removeListener("touch",touchHandler); Bangle.on('touch', getTouchHandler(ovr));
if (swipeHandler) Bangle.removeListener("swipe",swipeHandler); Bangle.on('swipe', getSwipeHandler(ovr));
touchHandler = getTouchHandler(ovr); }
swipeHandler = getSwipeHandler(ovr); backupDone=true;
Bangle.on('touch', touchHandler);
Bangle.on('swipe', swipeHandler);
if (event !== undefined){ if (event !== undefined){
drawBorder(ovr); drawBorder(ovr);

View File

@ -1,7 +1,7 @@
{ {
"id": "messagesoverlay", "id": "messagesoverlay",
"name": "Messages Overlay", "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)", "description": "An overlay based implementation of a messages UI (display notifications from iOS and Gadgetbridge/Android)",
"icon": "app.png", "icon": "app.png",
"type": "bootloader", "type": "bootloader",
@ -10,7 +10,6 @@
"dependencies" : { "messageicons":"module","messages":"app" }, "dependencies" : { "messageicons":"module","messages":"app" },
"readme": "README.md", "readme": "README.md",
"storage": [ "storage": [
{"name":"messagesoverlay.settings.js","url":"settings.js"},
{"name":"messagesoverlay","url":"lib.js"}, {"name":"messagesoverlay","url":"lib.js"},
{"name":"messagesoverlay.boot.js","url":"boot.js"} {"name":"messagesoverlay.boot.js","url":"boot.js"}
], ],

View File

@ -1 +0,0 @@
eval(require("Storage").read("messages.settings.js"));