diff options
Diffstat (limited to 'src/hci')
-rw-r--r-- | src/hci/tui/settings_ui.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/hci/tui/settings_ui.c b/src/hci/tui/settings_ui.c index 8fe13ad8..87afc9ba 100644 --- a/src/hci/tui/settings_ui.c +++ b/src/hci/tui/settings_ui.c @@ -119,6 +119,7 @@ static unsigned int select_setting_row ( struct setting_widget *widget, unsigned int index ) { struct settings *settings; struct setting *setting; + struct setting *previous = NULL; unsigned int count = 0; /* Initialise structure */ @@ -146,11 +147,18 @@ static unsigned int select_setting_row ( struct setting_widget *widget, /* Include any applicable settings */ for_each_table_entry ( setting, SETTINGS ) { + + /* Skip inapplicable settings */ if ( ! setting_applies ( widget->settings, setting ) ) continue; - if ( count++ == index ) { - /* Read current setting value and origin */ + /* Skip duplicate settings */ + if ( previous && ( setting_cmp ( setting, previous ) == 0 ) ) + continue; + previous = setting; + + /* Read current setting value and origin */ + if ( count++ == index ) { fetchf_setting ( widget->settings, setting, &widget->row.origin, &widget->row.setting, |