From 43448e42c9a6bb636bca29b5f87cec3e9df7f61e Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Mon, 27 Feb 2023 23:31:10 +0100 Subject: [PATCH 1/3] messagesoverlay - Fix handlers being restored incorrectly if message removed --- apps/messagesoverlay/ChangeLog | 3 ++- apps/messagesoverlay/lib.js | 35 ++++++++++-------------------- apps/messagesoverlay/metadata.json | 2 +- 3 files changed, 15 insertions(+), 25 deletions(-) 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", From c440a5d143d93c4659009ca875faaec602c57ccd Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Mon, 27 Feb 2023 23:33:47 +0100 Subject: [PATCH 2/3] messagesoverlay - Remove unused files --- apps/messagesoverlay/app-icon.png | Bin 2841 -> 0 bytes apps/messagesoverlay/metadata.json | 1 - apps/messagesoverlay/settings.js | 1 - 3 files changed, 2 deletions(-) delete mode 100644 apps/messagesoverlay/app-icon.png delete mode 100644 apps/messagesoverlay/settings.js diff --git a/apps/messagesoverlay/app-icon.png b/apps/messagesoverlay/app-icon.png deleted file mode 100644 index c9b4b62ac2eadee63a98380856f9337d0050578a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2841 zcmbVO2~<;O8VwW_P{0MW6~X6o5Ja<*9YV;4CXfY@e4Qhfi(JV|afbZ2e!VsnszzUX}CO1gXY%Dh4h$iL7 zCnNb9gr|aqQBb6X4-)85lM=G%w0eSX5y1U<`QY02m3=m`@Pj6CM$a-ReBZCwr5F=(VVYnW$WmIP3 zW|II0o!Tkr49>KAVn8M!7}cUQQ0Ww!jgkW>m;W_Xr*onSQzH7h-?t_vlJg8GH4!Cn zvk^f7e1fACVUp#576-__N3bjh)tj8*D#RIUFdMb~GN}+Mszr4GMgUfHXP<^_+=LU^ z_&Y>!zIIAs;7g3C(u5n6aa`+|a)KiZ#9&YuP^bdatMFW6l8w+n04i0QPyq}^4u(x9 z)49oXCO@3Zr*kLM=zJQ@4wd67Or7^OC~yZo{0%7Zn@VX?z7JR~=TFlUCZ!%hr%44c zXo`YiDn1iIkW7TmA}iH24w=hha>-mSM@>c$6`O&mG8sIcvcE47FU1kFO+H7w3dGCU zY;KH`$76t4KxYBnsu*a(2$(}2F zXDrp(Oe{tK$K(yH=_GXFz?BvQy#cTDm56P93SdGBdWHuczOCW+8<{<6ZZ-;1zUjC( zY-EQKxZ0GfG@_y`Fy8;|XnPQnt<-0sV85ioHkwr1&SK|9wd?|pq|Ft7J zg26UxyL9gF;Kun2f$9NGBiR4XM8;txk{eh8qU7wQe{MP-m#*+@65?a0HjNV*cDUTG zu8Ll^eoD!3&%e#y-nwGQ_^@xM?-@pm2%gLlk5XD3^-Qgq zbl1=CRB7zKZ7l~co#GY?ZywEiP+$&g9vyTfqVu0b<2BynwncYmNlU7R&fV*o?myps z=NQ}3>`^!P$OkXod|Yat@FII(_|)wV^~xG2FN@vYG#(a~$HpG;6%FqiIeaSo#q?#w zF_%8C$mww6Y_ae=2V%^I)-9L%qE#DmEWF#7j;I76{rd zTOh@mj9XBWUuiUykz-uBa^;Lw@)C_an89F7dA!G3GNtMCX)kwo_vO!SUca7@mR3=> zBi?Ixahrbh!7BlpT(h~nsbft-=-Q9Jvs&Xc8qL|4cUr@{?%Y}NeM*X)&pCbOO#P;L zKit5=T;t;63Z6YIH*i;+QzHu&bf=$S357E;tm~_Vfq{XSfB7Z&p^#1&6&5y*r|fe3 zRm&EC`SYP1?%0*zpZw!KZ;_wBzkg)@I&OID)vGHaqJn04X5)BMN6+dFqj=Se^7FY- zQ7c;`A|jg49X;}3%jV4={=3j<+`d)3b?GD*y*0r4d!S~1pQ5U=@@yTel-dz95mxYI z-qgY2v?C=OHg3#&^>T4RNKQoV-K$^j-5YkG?T@nb{Vhvw%|5=m==tM&-`3W~%$++o zeGxQl+u_5Nt*xy@eGx~QuQYb)4QTRW=p+BnT;9vvMW zCbPMwuC5FWEF+_6`SRtHM>cp!TsOyu#P3e}y}T{xdCbI+ke;UnGiJ_AN=!WQiSM}k z`A1c1^_-JW+ON*$F655YYPCT4<`XAeN$0l;n>rt?*|J4<%CGVpRX~bg>DOPAA3b_x z>1lT-`HqWX%A+a*&#(13vgAc&Z?8Er$amkqeGhwkYZ@93v=&+{n~onB`S|#>|7NvX zz3-)NkRJOp=hDTC;+!0IT3T9NI%Qr%LHU*2s9t|J@zt6&!;@2F`{2a%bZsA#vo=2D zvllNG=k<24zuwt71nTYWWw2QOag9|~RbN$Cho)H<=5>2M=?sInix1b=2XisTK=yRXNJ5D7X{LV7^N%3Vxr#PB-UlF8y-@3E}la zmq?2vZ~5i=%S3SR)A?n|E3TB5bwT74 Date: Tue, 28 Feb 2023 07:57:06 +0100 Subject: [PATCH 3/3] messagesoverlay - Only add listeners once --- apps/messagesoverlay/lib.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/messagesoverlay/lib.js b/apps/messagesoverlay/lib.js index 5c0f50f1c..2d5feae94 100644 --- a/apps/messagesoverlay/lib.js +++ b/apps/messagesoverlay/lib.js @@ -434,9 +434,11 @@ let main = function(ovr, event) { backupHandler("touch"); backupHandler("swipe"); backupHandler("drag"); + if (!backupDone){ + Bangle.on('touch', getTouchHandler(ovr)); + Bangle.on('swipe', getSwipeHandler(ovr)); + } backupDone=true; - Bangle.on('touch', getTouchHandler(ovr)); - Bangle.on('swipe', getSwipeHandler(ovr)); if (event !== undefined){ drawBorder(ovr);