@@ -14,6 +14,7 @@ const exs = require("exstats").getStats(
1414const S = require ( "Storage" ) ;
1515
1616let drawTimeout : TimeoutId | undefined ;
17+ let menuShown = false ;
1718
1819type Dist = number & { brand : 'dist' } ;
1920type Time = number & { brand : 'time' } ;
@@ -151,13 +152,11 @@ const drawSplit = (i: number, y: number, pace: number | string) =>
151152
152153const pauseRun = ( ) => {
153154 exs . stop ( ) ;
154- Bangle . setGPSPower ( 0 , "pace" )
155155 draw ( ) ;
156156} ;
157157
158158const resumeRun = ( ) => {
159159 exs . resume ( ) ;
160- Bangle . setGPSPower ( 1 , "pace" ) ;
161160
162161 g . clearRect ( Bangle . appRect ) ; // splits -> layout, clear. layout -> splits, fine
163162 layout . forgetLazyState ( ) ;
@@ -171,6 +170,12 @@ const onButton = () => {
171170 resumeRun ( ) ;
172171} ;
173172
173+ const hideMenu = ( ) => {
174+ if ( ! menuShown ) return ;
175+ Bangle . setUI ( ) ; // calls `remove`, which handles redrawing
176+ menuShown = false ;
177+ }
178+
174179exs . start ( ) ; // aka reset
175180
176181exs . stats . dist . on ( "notify" , ( dist ) => {
@@ -209,7 +214,7 @@ Bangle.on('lock', locked => {
209214setWatch ( ( ) => onButton ( ) , BTN1 , { repeat : true } ) ;
210215
211216Bangle . on ( 'drag' , e => {
212- if ( exs . state . active || e . b === 0 ) return ;
217+ if ( exs . state . active || e . b === 0 || menuShown ) return ;
213218
214219 splitOffsetPx -= e . dy ;
215220 if ( splitOffsetPx > 20 ) {
@@ -226,26 +231,28 @@ Bangle.on('twist', () => {
226231 Bangle . setBacklight ( 1 ) ;
227232} ) ;
228233
229- Bangle . on ( 'tap' , _e => {
230- if ( exs . state . active ) return ;
234+ Bangle . on ( 'tap' , e => {
235+ // require a double tap, to avoid picking up menu "< Back" taps
236+ if ( exs . state . active || menuShown || ! e . double ) return ;
231237
238+ menuShown = true ;
232239 const menu : Menu = {
233240 "" : {
234241 remove : ( ) => {
235242 draw ( ) ;
236243 } ,
237244 } ,
238245 "< Back" : ( ) => {
239- Bangle . setUI ( ) ; // calls `remove`, which handles redrawing
246+ hideMenu ( ) ;
240247 } ,
241248 "Zero time" : ( ) => {
242249 exs . start ( ) ; // calls reset
243250 exs . stop ( ) ; // re-pauses
244- Bangle . setUI ( ) ;
251+ hideMenu ( ) ;
245252 } ,
246253 "Clear splits" : ( ) => {
247254 splits . splice ( 0 , splits . length ) ;
248- Bangle . setUI ( ) ;
255+ hideMenu ( ) ;
249256 } ,
250257 } ;
251258
@@ -254,6 +261,7 @@ Bangle.on('tap', _e => {
254261
255262Bangle . loadWidgets ( ) ;
256263Bangle . drawWidgets ( ) ;
264+ Bangle . setGPSPower ( 1 , "pace" ) ;
257265
258266g . clearRect ( Bangle . appRect ) ;
259267draw ( ) ;
0 commit comments