menuwheel: override Bangle.setUI to clear up touch handler

Because apps/libraries expect setUI to clean up touch handlers.
pull/1245/head
Richard de Boer 2022-01-07 23:46:24 +01:00
parent 53d7103272
commit 2db23a39a6
No known key found for this signature in database
GPG Key ID: 8721727971871937
3 changed files with 8 additions and 5 deletions

View File

@ -4805,7 +4805,7 @@
{ {
"id": "menuwheel", "id": "menuwheel",
"name": "Wheel Menus", "name": "Wheel Menus",
"version": "0.01", "version": "0.02",
"description": "Replace Bangle.js 2's menus with a version that contains variable-size text and a back button", "description": "Replace Bangle.js 2's menus with a version that contains variable-size text and a back button",
"readme": "README.md", "readme": "README.md",
"icon": "icon.png", "icon": "icon.png",

View File

@ -1 +1,2 @@
0.01: New menu! 0.01: New menu!
0.02: Clean up touch handler in setUI

View File

@ -1,8 +1,5 @@
E.showMenu = function(items) { E.showMenu = function(items) {
g.clearRect(Bangle.appRect); // clear screen if no menu supplied g.clearRect(Bangle.appRect); // clear screen if no menu supplied
// clean up back button listener
if (Bangle.backHandler) Bangle.removeListener('touch', Bangle.backHandler)
delete Bangle.backHandler;
if (!items) { if (!items) {
Bangle.setUI(); Bangle.setUI();
return; return;
@ -206,8 +203,13 @@ E.showMenu = function(items) {
if (b===1) back(); if (b===1) back();
} }
} }
// note: backHandler is cleaned up at the top of this file
Bangle.on('touch', Bangle.backHandler); Bangle.on('touch', Bangle.backHandler);
} }
return l; return l;
}; };
// setUI now also needs to clear up our back button touch handler
Bangle.setUI = (old => function() {
if (Bangle.backHandler) Bangle.removeListener("touch", Bangle.backHandler);
delete Bangle.backHandler;
return old.apply(this, arguments);
})(Bangle.setUI);