diff options
Diffstat (limited to 'apps/player/keyboard.c')
-rw-r--r-- | apps/player/keyboard.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/apps/player/keyboard.c b/apps/player/keyboard.c index 9c857765b5..495102b29a 100644 --- a/apps/player/keyboard.c +++ b/apps/player/keyboard.c | |||
@@ -104,13 +104,30 @@ int kbd_input(char* text, int buflen) | |||
104 | while (!done) { | 104 | while (!done) { |
105 | int i, p; | 105 | int i, p; |
106 | int len = strlen(text); | 106 | int len = strlen(text); |
107 | int scrpos; | ||
108 | int dir; | ||
109 | |||
110 | scrpos = cursor_pos - left_pos; | ||
111 | dir = cursor_pos - old_cursor_pos; | ||
112 | |||
113 | /* Keep the cursor on screen, with a 2 character scroll margin */ | ||
114 | if(dir < 0) { | ||
115 | if(scrpos < 2) { | ||
116 | left_pos = cursor_pos - 2; | ||
117 | if(left_pos < 0) | ||
118 | left_pos = 0; | ||
119 | } | ||
120 | } | ||
121 | if(dir > 0) { | ||
122 | if(scrpos > 7) { | ||
123 | left_pos = cursor_pos - 9; | ||
124 | if(left_pos < 0) | ||
125 | left_pos = 0; | ||
126 | if(left_pos > len - 9) | ||
127 | left_pos = len - 9; | ||
128 | } | ||
129 | } | ||
107 | 130 | ||
108 | /* draw input */ | ||
109 | if (old_cursor_pos<cursor_pos && 7<(cursor_pos-left_pos) && cursor_pos<(len-1)) | ||
110 | left_pos++; | ||
111 | else | ||
112 | if (cursor_pos<old_cursor_pos && (cursor_pos-left_pos)<2 && 0<left_pos) | ||
113 | left_pos--; | ||
114 | p=0; | 131 | p=0; |
115 | i = left_pos; | 132 | i = left_pos; |
116 | while (p<10 && text[i]) { | 133 | while (p<10 && text[i]) { |