summaryrefslogtreecommitdiff
path: root/apps/recorder/keyboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/recorder/keyboard.c')
-rw-r--r--apps/recorder/keyboard.c32
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
1230static void kbd_move_picker_horizontal(struct keyboard_parameters *pm, 1232static 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);