summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-02-28 09:37:52 +0400
committerAndrew Dolgov <[email protected]>2013-02-28 09:37:52 +0400
commit271edfa6f9ac8ad387f98693a6c09496ddf72f1f (patch)
treebe105dbcf4c8316c24931de5263b4d7c48d21a0a /js
parent81d5b6e9ef3c7912e157d9338ae7b07133b57539 (diff)
parent350e3944d49ad26802e27e64057212d88c4d0bf9 (diff)
Merge branch 'master' of github.com:gothfox/Tiny-Tiny-RSS
Diffstat (limited to 'js')
-rw-r--r--js/feedlist.js2
-rw-r--r--js/tt-rss.js6
-rw-r--r--js/viewfeed.js57
3 files changed, 50 insertions, 15 deletions
diff --git a/js/feedlist.js b/js/feedlist.js
index 282e64b37..b2aadab62 100644
--- a/js/feedlist.js
+++ b/js/feedlist.js
@@ -227,7 +227,7 @@ function request_counters(force) {
var date = new Date();
var timestamp = Math.round(date.getTime() / 1000);
- if (force || timestamp - counters_last_request > 15) {
+ if (force || timestamp - counters_last_request > 5) {
console.log("scheduling request of counters...");
counters_last_request = timestamp;
diff --git a/js/tt-rss.js b/js/tt-rss.js
index 530cb2931..7462d933d 100644
--- a/js/tt-rss.js
+++ b/js/tt-rss.js
@@ -604,6 +604,12 @@ function hotkey_handler(e) {
case "prev_article":
moveToPost('prev');
return false;
+ case "next_article_noscroll":
+ moveToPost('next', true);
+ return false;
+ case "prev_article_noscroll":
+ moveToPost('prev', true);
+ return false;
case "search_dialog":
search();
return ;
diff --git a/js/viewfeed.js b/js/viewfeed.js
index 1cdfdba3f..b8dc05aed 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -325,7 +325,8 @@ function article_callback2(transport, id) {
Element.show(dijit.byId("net-alert").domNode);
}
- request_counters();
+ var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length
+ request_counters(unread_in_buffer == 0);
headlines_scroll_handler($("headlines-frame"));
@@ -513,7 +514,7 @@ function togglePub(id, client_only, no_effects, note) {
}
}
-function moveToPost(mode) {
+function moveToPost(mode, noscroll) {
try {
@@ -548,13 +549,23 @@ function moveToPost(mode) {
}
if (mode == "next") {
- if (next_id) {
+ if (next_id || active_post_id) {
if (isCdmMode()) {
- cdmExpandArticle(next_id);
- cdmScrollToArticleId(next_id);
+ var article = $("RROW-" + active_post_id);
+ var ctr = $("headlines-frame");
- } else {
+ if (!noscroll && article && article.offsetTop + article.offsetHeight >
+ ctr.scrollTop + ctr.offsetHeight) {
+
+ scrollArticle(ctr.offsetHeight/2);
+
+ } else if (next_id) {
+ cdmExpandArticle(next_id);
+ cdmScrollToArticleId(next_id);
+ }
+
+ } else if (next_id) {
correctHeadlinesOffset(next_id);
view(next_id, getActiveFeedId());
}
@@ -562,11 +573,24 @@ function moveToPost(mode) {
}
if (mode == "prev") {
- if (prev_id) {
+ if (prev_id || active_post_id) {
if (isCdmMode()) {
- cdmExpandArticle(prev_id);
- cdmScrollToArticleId(prev_id);
- } else {
+
+ var article = $("RROW-" + active_post_id);
+ var prev_article = $("RROW-" + prev_id);
+ var ctr = $("headlines-frame");
+
+ if (!noscroll && article && article.offsetTop < ctr.scrollTop) {
+ scrollArticle(-ctr.offsetHeight/2);
+ } else if (!noscroll && prev_article &&
+ prev_article.offsetTop < ctr.scrollTop) {
+ cdmExpandArticle(prev_id);
+ scrollArticle(-ctr.offsetHeight/2);
+ } else if (prev_id) {
+ cdmExpandArticle(prev_id);
+ cdmScrollToArticleId(prev_id);
+ }
+ } else if (prev_id) {
correctHeadlinesOffset(prev_id);
view(prev_id, getActiveFeedId());
}
@@ -1131,7 +1155,11 @@ function cdmScrollToArticleId(id) {
if (!e || !ctr) return;
- ctr.scrollTop = e.offsetTop;
+ if (e.offsetTop+e.offsetHeight > (ctr.scrollTop+ctr.offsetHeight) ||
+ e.offsetTop < ctr.scrollTop) {
+
+ ctr.scrollTop = e.offsetTop;
+ }
} catch (e) {
exception_error("cdmScrollToArticleId", e);
@@ -1330,12 +1358,12 @@ function cdmExpandArticle(id) {
Element.hide("CEXC-" + id);
}
- var new_offset = $("RROW-" + id).offsetTop;
+ /* var new_offset = $("RROW-" + id).offsetTop;
$("headlines-frame").scrollTop += (new_offset-old_offset);
if ($("RROW-" + id).offsetTop != old_offset)
- $("headlines-frame").scrollTop = new_offset;
+ $("headlines-frame").scrollTop = new_offset; */
toggleUnread(id, 0, true);
toggleSelected(id);
@@ -1550,7 +1578,8 @@ function cdmClicked(event, id) {
openArticleInNewWindow(id);
}
- request_counters();
+ var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length
+ request_counters(unread_in_buffer == 0);
} catch (e) {
exception_error("cdmClicked");