From 48be35ca063bb2fde1db3cbbc7ffaaf2f71a6e03 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov 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) {