Skip to content

Commit

Permalink
[settings] Add support for navigation keys in "config" user interface
Browse files Browse the repository at this point in the history
Add support for page up, page down, home and end keys, matching the
navigation logic used in the menu user interface.

Originally-implemented-by: Marin Hannache <git@mareo.fr>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Jul 15, 2013
1 parent 4fabc00 commit 75bd5b5
Showing 1 changed file with 27 additions and 9 deletions.
36 changes: 27 additions & 9 deletions src/hci/tui/settings_ui.c
Expand Up @@ -508,13 +508,25 @@ static int main_loop ( struct settings *settings ) {
key = getkey ( 0 );
move = 0;
switch ( key ) {
case KEY_UP:
move = -1;
break;
case KEY_DOWN:
if ( widget.current < ( widget.num_rows - 1 ) )
move = +1;
move = +1;
break;
case KEY_UP:
if ( widget.current > 0 )
move = -1;
case KEY_PPAGE:
move = ( widget.first_visible -
widget.current - 1 );
break;
case KEY_NPAGE:
move = ( widget.first_visible - widget.current
+ SETTINGS_LIST_ROWS );
break;
case KEY_HOME:
move = -widget.num_rows;
break;
case KEY_END:
move = +widget.num_rows;
break;
case CTRL_D:
if ( ! widget.row.setting )
Expand Down Expand Up @@ -545,10 +557,16 @@ static int main_loop ( struct settings *settings ) {
}
if ( move ) {
next = ( widget.current + move );
draw_setting_row ( &widget );
redraw = 1;
reveal_setting_row ( &widget, next );
select_setting_row ( &widget, next );
if ( ( int ) next < 0 )
next = 0;
if ( next >= widget.num_rows )
next = ( widget.num_rows - 1 );
if ( next != widget.current ) {
draw_setting_row ( &widget );
redraw = 1;
reveal_setting_row ( &widget, next );
select_setting_row ( &widget, next );
}
}
}
}
Expand Down

0 comments on commit 75bd5b5

Please sign in to comment.