From 48be35ca063bb2fde1db3cbbc7ffaaf2f71a6e03 Mon Sep 17 00:00:00 2001
From: Andrew Dolgov <fox@madoka.volgo-balt.ru>
Date: Thu, 16 May 2013 09:53:34 +0400
Subject: [PATCH] while cdm_auto_catchup is enabled, after scrolling set active
 article to the topmost visible in the buffer so that n/p hotkeys would not
 reset scrolling position

---
 js/viewfeed.js | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/js/viewfeed.js b/js/viewfeed.js
index dc8d3fe88..3981fd964 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -1240,6 +1240,30 @@ function headlines_scroll_handler(e) {
 
 		unpackVisibleHeadlines();
 
+		var active_found = false;
+
+		// set topmost child in the buffer as active
+		if (getInitParam("cdm_auto_catchup") == 1) {
+			var rows = $$("#headlines-frame > div[id*=RROW]");
+
+			for (var i = 0; i < rows.length; i++) {
+				var child = rows[i];
+
+				if (!active_found && $("headlines-frame").scrollTop < child.offsetTop) {
+					active_found = true;
+
+					if (_active_article_id) {
+						var row = $("RROW-" + _active_article_id);
+						if (row) row.removeClassName("active");
+					}
+
+					_active_article_id = child.id.replace("RROW-", "");
+					showArticleInHeadlines(_active_article_id, true);
+					break;
+				}
+			}
+		}
+
 		if (!_infscroll_disable) {
 			if ((hsp && e.scrollTop + e.offsetHeight >= hsp.offsetTop - hsp.offsetHeight) ||
 					(e.scrollHeight != 0 &&
@@ -1275,6 +1299,7 @@ function headlines_scroll_handler(e) {
 
 						//console.log("auto_catchup_batch: " + catchup_id_batch.toString());
 					}
+
 				});
 
 			if (catchup_id_batch.length > 0) {
-- 
GitLab