From 94ff057a6c7fb397265892230eb13c3ed99d36cc Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Sat, 10 Feb 2007 22:12:27 +0100 Subject: [PATCH] Accesskey didn't work as it should. [ Backported from commit 682ad62a974490246a7387a8bbdf197108c71137 in ELinks 0.12.GIT. --KON ] --- src/viewer/text/link.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/viewer/text/link.c b/src/viewer/text/link.c index 190dc193..c10c78b9 100644 --- a/src/viewer/text/link.c +++ b/src/viewer/text/link.c @@ -1093,7 +1093,6 @@ try_document_key(struct session *ses, struct document_view *doc_view, struct term_event *ev) { long key; - int passed = -1; int i; /* GOD I HATE C! --FF */ /* YEAH, BRAINFUCK RULEZ! --pasky */ assert(ses && doc_view && doc_view->document && doc_view->vs && ev); @@ -1108,24 +1107,23 @@ try_document_key(struct session *ses, struct document_view *doc_view, * key we test.. */ key = get_kbd_key(ev); - for (i = 0; i < doc_view->document->nlinks; i++) { + i = doc_view->vs->current_link >= 0 ? doc_view->vs->current_link : 0; + for (; i < doc_view->document->nlinks; i++) { struct link *link = &doc_view->document->links[i]; if (key == link->accesskey) { /* FIXME: key vs unicode ... */ - if (passed != i && i <= doc_view->vs->current_link) { - /* This is here in order to rotate between - * links with same accesskey. */ - if (passed < 0) passed = i; - continue; - } ses->kbdprefix.repeat_count = 0; goto_link_number_do(ses, doc_view, i); return FRAME_EVENT_REFRESH; } + } + for (i = 0; i < doc_view->vs->current_link; i++) { + struct link *link = &doc_view->document->links[i]; - if (i == doc_view->document->nlinks - 1 && passed >= 0) { - /* Return to the start. */ - i = passed - 1; + if (key == link->accesskey) { /* FIXME: key vs unicode ... */ + ses->kbdprefix.repeat_count = 0; + goto_link_number_do(ses, doc_view, i); + return FRAME_EVENT_REFRESH; } }