Re: Sponsor development of the key motion.

Witold Filipczyk <[email protected]>
Newsgroups gmane.comp.web.links
Message-ID <20070814175914.GA16311@pldmachine>
Here is the patch.
Kalle, Jonas, could apply them (key motion patches) to the mainstream ELinks?

_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev
04.patch (text/plain, 2.2 KB)
move-link-down-line, move-link-prev-line, etc.:
Change mode to NAVIGATE_LINKWISE to preserve the link position when
going back.

---
commit 14b37d0362f9963cb2803d08d2c3e6e84574cdbe
tree 062545598ae45bf519f7e825b0302542061bbf34
parent 2045574edca170a47b1e9f1e05cd210bdae8a49a
author Witold Filipczyk <[email protected]> Tue, 14 Aug 2007 19:56:02 +0200
committer Witold Filipczyk <nobody@nowhere> Tue, 14 Aug 2007 19:56:02 +0200

 src/viewer/text/view.c |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/viewer/text/view.c b/src/viewer/text/view.c
index 887f301..a0ebefa 100644
--- a/src/viewer/text/view.c
+++ b/src/viewer/text/view.c
@@ -201,8 +201,13 @@ move_link_prev_line(struct session *ses, struct document_view *doc_view)
 			if (!last) last = link;
 			else if (link->points[0].x > last->points[0].x) last = link;
 		}
-		if (last)
-			return move_cursor_rel(ses, doc_view, last->points[0].x - x1, last->points[0].y - y1);
+		if (last) {
+			enum frame_event_status status = move_cursor_rel(ses, doc_view,
+				last->points[0].x - x1, last->points[0].y - y1);
+
+			ses->navigate_mode = NAVIGATE_LINKWISE;
+			return status;
+		}
 	}
 	return FRAME_EVENT_OK;
 }
@@ -245,8 +250,13 @@ move_link_next_line(struct session *ses, struct document_view *doc_view)
 			if (!last) last = link;
 			else if (link->points[0].x < last->points[0].x) last = link;
 		}
-		if (last)
-			return move_cursor_rel(ses, doc_view, last->points[0].x - x1, last->points[0].y - y1);
+		if (last) {
+			enum frame_event_status status = move_cursor_rel(ses, doc_view,
+				last->points[0].x - x1, last->points[0].y - y1);
+
+			ses->navigate_mode = NAVIGATE_LINKWISE;
+			return status;
+		}
 	}
 	return FRAME_EVENT_OK;
 }
@@ -708,7 +718,12 @@ move_link_vertical(struct session *ses, struct document_view *doc_view, int dir_
 		if (!link) continue;
 		for (; link <= document->lines2[y]; link++) {
 			if (link->points[0].y == y) {
-				return move_cursor_rel(ses, doc_view, 0, y - y1);
+				enum frame_event_status status = move_cursor_rel(ses,
+					doc_view, 0, y - y1);
+
+				if (vs->current_link != -1)
+					ses->navigate_mode = NAVIGATE_LINKWISE;
+				return status;
 			}
 		}
 	}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.