@@ -61,6 +61,10 @@ namespace menu {
6161 }
6262
6363 virtual void main (const klib::time::us delta, const input::buttons& buttons) override {
64+ // flag if we are doing a long press on up or down
65+ static bool long_press_up = false ;
66+ static bool long_press_down = false ;
67+
6468 // check what button is pressed
6569 if (buttons.enter == input::state::pressed) {
6670 // before we do anything go back to the previous item
@@ -84,7 +88,16 @@ namespace menu {
8488 cancel ();
8589 }
8690 }
87- else if (input::is_pressed (buttons.down )) {
91+ else if ((buttons.down == input::state::released) || (buttons.up == input::state::released)) {
92+ // stop incrementing/decrementing the numbers
93+ long_press_up = false ;
94+ long_press_down = false ;
95+ }
96+ else if (input::is_pressed (buttons.down ) || long_press_down) {
97+ if (buttons.down == input::state::long_pressed) {
98+ long_press_down = true ;
99+ }
100+
88101 // the down button is pressed
89102 if (value <= range.x ) {
90103 // set to max value in range
@@ -94,7 +107,11 @@ namespace menu {
94107 value--;
95108 }
96109 }
97- else if (input::is_pressed (buttons.up )) {
110+ else if (input::is_pressed (buttons.up ) || long_press_up) {
111+ if (buttons.up == input::state::long_pressed) {
112+ long_press_up = true ;
113+ }
114+
98115 // the up button is pressed
99116 if (value >= range.y ) {
100117 // set to max value in range
0 commit comments