summaryrefslogtreecommitdiff
path: root/feedlist.js
diff options
context:
space:
mode:
Diffstat (limited to 'feedlist.js')
-rw-r--r--feedlist.js35
1 files changed, 33 insertions, 2 deletions
diff --git a/feedlist.js b/feedlist.js
index 833fe9e26..4f1a56c2a 100644
--- a/feedlist.js
+++ b/feedlist.js
@@ -64,11 +64,42 @@ function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) {
var cached_headlines = false;
- if (feed == getActiveFeedId())
+ if (feed == getActiveFeedId()) {
cache_delete("feed:" + feed + ":" + is_cat);
- else
+ } else {
cached_headlines = cache_get("feed:" + feed + ":" + is_cat);
+ // switching to a different feed, we might as well catchup stuff visible
+ // in headlines buffer (if any)
+ if (!background && getInitParam("cdm_auto_catchup") == 1 && parseInt(getActiveFeedId()) > 0) {
+
+ $$("#headlines-frame > div[id*=RROW][class*=Unread]").each(
+ function(child) {
+ var hf = $("headlines-frame");
+
+ if (hf.scrollTop + hf.offsetHeight >=
+ child.offsetTop + child.offsetHeight) {
+
+ var id = child.id.replace("RROW-", "");
+
+ if (catchup_id_batch.indexOf(id) == -1)
+ catchup_id_batch.push(id);
+
+ }
+
+ if (catchup_id_batch.length > 0) {
+ window.clearTimeout(catchup_timeout_id);
+
+ if (!_infscroll_request_sent) {
+ catchup_timeout_id = window.setTimeout('catchupBatchedArticles()',
+ 2000);
+ }
+ }
+
+ });
+ }
+ }
+
if (offset == 0)
dijit.byId("content-tabs").selectChild(
dijit.byId("content-tabs").getChildren()[0]);