summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2004-07-09 13:11:16 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2004-07-09 13:11:16 +0000
commit6ed333e3d7630bab4f885407b1f4cf434b7730ad (patch)
tree677c933047b33033c798cfd3284e970af6f7cd39
parent7c931a12ec3747f7822dcd5ff1dd3255344a46f6 (diff)
downloadrockbox-6ed333e3d7630bab4f885407b1f4cf434b7730ad.tar.gz
rockbox-6ed333e3d7630bab4f885407b1f4cf434b7730ad.zip
Fixed the Player keyboard cursor positioning, bug #983404
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4861 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/player/keyboard.c29
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]) {