@@ -378,28 +378,12 @@ impl Keyboard {
378
378
} ;
379
379
380
380
button. connect_clicked ( clone ! ( @weak kb => @default -panic, move |_| {
381
- let picker = match kb. inner( ) . picker. borrow( ) . upgrade( ) {
382
- Some ( picker) => picker,
383
- None => { return ; } ,
384
- } ;
385
-
386
- let keys = kb. inner( ) . keys. borrow( ) ;
387
-
388
- if let Some ( selected) = kb. inner( ) . selected. replace( None ) {
389
- keys[ selected] . deselect( & picker, kb. layer( ) ) ;
390
- if i == selected {
391
- // Allow deselect
392
- return ;
393
- }
381
+ // Deselect
382
+ if kb. inner( ) . selected. get( ) == Some ( i) {
383
+ kb. set_selected( None ) ;
384
+ } else {
385
+ kb. set_selected( Some ( i) ) ;
394
386
}
395
-
396
- {
397
- let k = & keys[ i] ;
398
- println!( "{:#?}" , k) ;
399
- k. select( & picker, kb. layer( ) ) ;
400
- }
401
-
402
- kb. inner( ) . selected. set( Some ( i) ) ;
403
387
} ) ) ;
404
388
405
389
let mut keys = self . inner ( ) . keys . borrow_mut ( ) ;
@@ -422,4 +406,24 @@ impl Keyboard {
422
406
}
423
407
}
424
408
}
409
+
410
+ fn set_selected ( & self , i : Option < usize > ) {
411
+ let picker = match self . inner ( ) . picker . borrow ( ) . upgrade ( ) {
412
+ Some ( picker) => picker,
413
+ None => { return ; } ,
414
+ } ;
415
+ let keys = self . inner ( ) . keys . borrow ( ) ;
416
+
417
+ if let Some ( selected) = self . inner ( ) . selected . get ( ) {
418
+ keys[ selected] . deselect ( & picker, self . layer ( ) ) ;
419
+ }
420
+
421
+ if let Some ( i) = i {
422
+ let k = & keys[ i] ;
423
+ println ! ( "{:#?}" , k) ;
424
+ k. select ( & picker, self . layer ( ) ) ;
425
+ }
426
+
427
+ self . inner ( ) . selected . set ( i) ;
428
+ }
425
429
}
0 commit comments