diff options
author | Andrew Dolgov <[email protected]> | 2013-02-27 22:27:49 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2013-02-27 22:27:49 +0400 |
commit | 104e5c6557707b13307802dd3b9c87d0209d4a92 (patch) | |
tree | d1f7c2b1974af5148f6fe40e82c9504064449643 /js/viewfeed.js | |
parent | 1ebf3b979ecb697285edd3bec284290bd305647d (diff) |
moveToPost: implement more natural next/prev moving in combined mode
Diffstat (limited to 'js/viewfeed.js')
-rw-r--r-- | js/viewfeed.js | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/js/viewfeed.js b/js/viewfeed.js index 07af91a67..6f88f7eac 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -549,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 (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()); } @@ -563,11 +573,23 @@ 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 (article && article.offsetTop < ctr.scrollTop) { + scrollArticle(-ctr.offsetHeight/2); + } else if (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()); } |