diff options
Diffstat (limited to 'apps/recorder/keyboard.c')
-rw-r--r-- | apps/recorder/keyboard.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c index b211fad331..9586385d3e 100644 --- a/apps/recorder/keyboard.c +++ b/apps/recorder/keyboard.c | |||
@@ -1215,16 +1215,18 @@ static void kbd_move_cursor(struct edit_state *state, int dir) | |||
1215 | { | 1215 | { |
1216 | state->changed = CHANGED_CURSOR; | 1216 | state->changed = CHANGED_CURSOR; |
1217 | } | 1217 | } |
1218 | else if (state->editpos > state->len_utf8) | 1218 | else if (global_settings.list_wraparound && state->editpos > state->len_utf8) |
1219 | { | 1219 | { |
1220 | state->editpos = 0; | 1220 | state->editpos = 0; |
1221 | if (global_settings.talk_menu) beep_play(1000, 150, 1500); | 1221 | if (global_settings.talk_menu) beep_play(1000, 150, 1500); |
1222 | } | 1222 | } |
1223 | else if (state->editpos < 0) | 1223 | else if (global_settings.list_wraparound && state->editpos < 0) |
1224 | { | 1224 | { |
1225 | state->editpos = state->len_utf8; | 1225 | state->editpos = state->len_utf8; |
1226 | if (global_settings.talk_menu) beep_play(1000, 150, 1500); | 1226 | if (global_settings.talk_menu) beep_play(1000, 150, 1500); |
1227 | } | 1227 | } |
1228 | else if (!global_settings.list_wraparound) | ||
1229 | state->editpos -= dir; | ||
1228 | } | 1230 | } |
1229 | 1231 | ||
1230 | static void kbd_move_picker_horizontal(struct keyboard_parameters *pm, | 1232 | static void kbd_move_picker_horizontal(struct keyboard_parameters *pm, |
@@ -1235,12 +1237,22 @@ static void kbd_move_picker_horizontal(struct keyboard_parameters *pm, | |||
1235 | pm->x += dir; | 1237 | pm->x += dir; |
1236 | if (pm->x < 0) | 1238 | if (pm->x < 0) |
1237 | { | 1239 | { |
1240 | if (!global_settings.list_wraparound && pm->page == 0) | ||
1241 | { | ||
1242 | pm->x = 0; | ||
1243 | return; | ||
1244 | } | ||
1238 | if (--pm->page < 0) | 1245 | if (--pm->page < 0) |
1239 | pm->page = pm->pages - 1; | 1246 | pm->page = pm->pages - 1; |
1240 | pm->x = pm->max_chars - 1; | 1247 | pm->x = pm->max_chars - 1; |
1241 | } | 1248 | } |
1242 | else if (pm->x >= pm->max_chars) | 1249 | else if (pm->x >= pm->max_chars) |
1243 | { | 1250 | { |
1251 | if (!global_settings.list_wraparound && pm->page == pm->pages - 1) | ||
1252 | { | ||
1253 | pm->x = pm->max_chars - 1; | ||
1254 | return; | ||
1255 | } | ||
1244 | if (++pm->page >= pm->pages) | 1256 | if (++pm->page >= pm->pages) |
1245 | pm->page = 0; | 1257 | pm->page = 0; |
1246 | pm->x = 0; | 1258 | pm->x = 0; |
@@ -1261,6 +1273,22 @@ static void kbd_move_picker_vertical(struct keyboard_parameters *pm, | |||
1261 | #endif /* HAVE_MORSE_INPUT */ | 1273 | #endif /* HAVE_MORSE_INPUT */ |
1262 | 1274 | ||
1263 | pm->y += dir; | 1275 | pm->y += dir; |
1276 | |||
1277 | if (!global_settings.list_wraparound) | ||
1278 | { | ||
1279 | if (pm->y >= pm->lines) | ||
1280 | { | ||
1281 | pm->y = pm->lines; | ||
1282 | pm->line_edit = true; | ||
1283 | } | ||
1284 | else if (pm->y < 0) | ||
1285 | pm->y = 0; | ||
1286 | else if (pm->line_edit) | ||
1287 | pm->line_edit = false; | ||
1288 | |||
1289 | return; | ||
1290 | } | ||
1291 | |||
1264 | if (pm->line_edit) | 1292 | if (pm->line_edit) |
1265 | { | 1293 | { |
1266 | pm->y = (dir > 0 ? 0 : pm->lines - 1); | 1294 | pm->y = (dir > 0 ? 0 : pm->lines - 1); |