@@ -175,11 +175,11 @@ E.showMenu = (items?: Menu): MenuInstance => {
175175 g . setColor ( ( idx < menuItems . length ) ?g . theme . fg :g . theme . bg ) . fillPoly ( [ 72 , 166 , 104 , 166 , 88 , 174 ] ) ;
176176 g . flip ( ) ;
177177 } ,
178- select : ( ) => {
178+ select : ( evt : TouchCallbackXY | undefined ) => {
179179 const item = items ! [ menuItems [ selected ] ] as ActualMenuItem ;
180180
181181 if ( typeof item === "function" ) {
182- item ( ) ;
182+ item ( evt ) ;
183183 } else if ( typeof item === "object" ) {
184184 if ( typeof item . value === "number" ) {
185185 selectEdit = selectEdit ? undefined : item ;
@@ -188,12 +188,12 @@ E.showMenu = (items?: Menu): MenuInstance => {
188188 item . value = ! item . value ;
189189
190190 if ( item . onchange )
191- item . onchange ( item . value as boolean ) ;
191+ item . onchange ( item . value as boolean , evt ) ;
192192 }
193193 l . draw ( ) ;
194194 }
195195 } ,
196- move : ( dir : number ) => {
196+ move : ( dir : number , evt : TouchCallbackXY | undefined ) => {
197197 const item = selectEdit ;
198198
199199 if ( typeof item === "object" && typeof item . value === "number" ) {
@@ -209,7 +209,7 @@ E.showMenu = (items?: Menu): MenuInstance => {
209209
210210 if ( item . value !== orig ) {
211211 if ( item . onchange )
212- item . onchange ( item . value ) ;
212+ item . onchange ( item . value , evt ) ;
213213
214214 l . draw ( selected , selected ) ;
215215 }
@@ -247,6 +247,11 @@ E.showMenu = (items?: Menu): MenuInstance => {
247247 Bangle . on ( 'swipe' , onSwipe ) ;
248248 }
249249
250+ const cb = ( dir ?: 1 | - 1 , evt ?: TouchCallbackXY ) => {
251+ if ( dir ) l . move ( prosettings . naturalScroll ? - dir : dir , evt ) ;
252+ else l . select ( evt ) ;
253+ } ;
254+
250255 Bangle . setUI ( {
251256 mode : "updown" ,
252257 back,
@@ -255,11 +260,13 @@ E.showMenu = (items?: Menu): MenuInstance => {
255260 Bangle . removeListener ( "swipe" , onSwipe ) ;
256261 options . remove ?.( ) ;
257262 } ,
258- } as SetUIArg < "updown" > ,
259- dir => {
260- if ( dir ) l . move ( prosettings . naturalScroll ? - dir : dir ) ;
261- else l . select ( ) ;
262- } ) ;
263+ touch : ( ( _button , xy ) => {
264+ // since we've specified options.touch,
265+ // we need to pass through all taps since the default
266+ // touchHandler isn't installed in setUI
267+ cb ( void 0 , xy ) ;
268+ } ) satisfies TouchCallback ,
269+ } as SetUIArg < "updown" > , cb ) ;
263270
264271 return l ;
265272} ;
0 commit comments