|
1 | 1 | { |
2 | | - // TODO: Should the global case just hijack the swipe and drag events, modifying them before passing on to other listeners? |
3 | | - // - That could be a new separate bootloader app instead though? |
4 | | - |
5 | 2 | const settings = Object.assign({ |
6 | 3 | global: false, |
7 | 4 | apps: [] |
8 | 5 | }, require("Storage").readJSON("swipeinv.json", true) || {}); |
9 | 6 |
|
10 | | - if (settings.global || settings.apps.length > 0) { |
11 | | - const setURIOrig = Bangle.setUI; |
12 | | - Bangle.setUI = (mode, callback) => { |
13 | | - if (typeof mode === "object" && mode.swipe) { |
| 7 | + setTimeout(() => { // Timeout so we prepend listeners late, hopefully after all other listerners were added. |
| 8 | + if (settings.global || settings.apps.length > 0) { |
| 9 | + |
| 10 | + let swipeInverter = (dirLR, dirUD, obj) => { |
14 | 11 | if (settings.global ^ settings.apps.includes(global.__FILE__)) { |
15 | | - const origSwipeCb = mode.swipe; |
16 | | - mode.swipe = (dirLR, dirUD) => origSwipeCb(dirLR * -1, dirUD * -1); |
| 12 | + if (!(obj && obj.inverted)) { |
| 13 | + E.stopEventPropagation(); |
| 14 | + obj = Object.assign({inverted:true}, obj); |
| 15 | + |
| 16 | + Bangle.emit("swipe", dirLR * -1, dirUD * -1, obj) |
| 17 | + } |
17 | 18 | } |
18 | 19 | } |
19 | | - if (typeof mode === "object" && mode.drag) { |
| 20 | + |
| 21 | + let dragInverter = (e) => { |
20 | 22 | if (settings.global ^ settings.apps.includes(global.__FILE__)) { |
21 | | - const origDragCb = mode.drag; |
22 | | - mode.drag = (e) => { |
| 23 | + if (!e.inverted) { |
| 24 | + E.stopEventPropagation(); |
| 25 | + e.inverted = true; |
| 26 | + |
23 | 27 | e.dx *= -1; |
24 | 28 | e.dy *= -1; |
25 | | - origDragCb(e); |
| 29 | + Bangle.emit("drag", e); |
26 | 30 | } |
27 | 31 | } |
28 | 32 | } |
29 | | - return setURIOrig(mode, callback); |
30 | | - }; |
31 | | - } |
| 33 | + |
| 34 | + Bangle.prependListener("swipe", swipeInverter); |
| 35 | + Bangle.prependListener("drag", dragInverter); |
| 36 | + |
| 37 | + } |
| 38 | + }, 0) |
32 | 39 | } |
0 commit comments