change ctrl-arrow bindings to always keep current article on top

(previous behavior)
replace direct active_post_id references with get/set functions
master
Andrew Dolgov 12 years ago
parent 1b04a298ef
commit 18e1a773d1

@ -111,7 +111,7 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) {
_viewfeed_last = get_timestamp(); _viewfeed_last = get_timestamp();
if (getActiveFeedId() != feed || offset == 0) { if (getActiveFeedId() != feed || offset == 0) {
active_post_id = 0; setActiveArticleId(0);
_infscroll_disable = 0; _infscroll_disable = 0;
} }

@ -1205,7 +1205,7 @@ function quickAddFilter() {
var lh = dojo.connect(dialog, "onLoad", function(){ var lh = dojo.connect(dialog, "onLoad", function(){
dojo.disconnect(lh); dojo.disconnect(lh);
var title = $("PTITLE-FULL-" + active_post_id); var title = $("PTITLE-FULL-" + getActiveArticleId());
if (title || getActiveFeedId() || activeFeedIsCat()) { if (title || getActiveFeedId() || activeFeedIsCat()) {
if (title) title = title.innerHTML; if (title) title = title.innerHTML;

@ -1,7 +1,7 @@
var active_post_id = false;
var article_cache = new Array(); var article_cache = new Array();
var _active_article_id = 0;
var vgroup_last_feed = false; var vgroup_last_feed = false;
var post_under_pointer = false; var post_under_pointer = false;
@ -303,7 +303,7 @@ function article_callback2(transport, id) {
if (reply) { if (reply) {
reply.each(function(article) { reply.each(function(article) {
if (active_post_id == article['id']) { if (getActiveArticleId() == article['id']) {
render_article(article['content']); render_article(article['content']);
} }
cids_requested.remove(article['id']); cids_requested.remove(article['id']);
@ -382,7 +382,7 @@ function view(id) {
var article_is_unread = crow.hasClassName("Unread"); var article_is_unread = crow.hasClassName("Unread");
active_post_id = id; setActiveArticleId(id);
showArticleInHeadlines(id); showArticleInHeadlines(id);
precache_headlines(); precache_headlines();
@ -523,22 +523,22 @@ function moveToPost(mode, noscroll) {
var prev_id = false; var prev_id = false;
var next_id = false; var next_id = false;
if (!$('RROW-' + active_post_id)) { if (!$('RROW-' + getActiveArticleId())) {
active_post_id = false; setActiveArticleId(0);
} }
if (active_post_id == false) { if (!getActiveArticleId()) {
next_id = rows[0]; next_id = rows[0];
prev_id = rows[rows.length-1] prev_id = rows[rows.length-1]
} else { } else {
for (var i = 0; i < rows.length; i++) { for (var i = 0; i < rows.length; i++) {
if (rows[i] == active_post_id) { if (rows[i] == getActiveArticleId()) {
// Account for adjacent identical article ids. // Account for adjacent identical article ids.
if (i > 0) prev_id = rows[i-1]; if (i > 0) prev_id = rows[i-1];
for (var j = i+1; j < rows.length; j++) { for (var j = i+1; j < rows.length; j++) {
if (rows[j] != active_post_id) { if (rows[j] != getActiveArticleId()) {
next_id = rows[j]; next_id = rows[j];
break; break;
} }
@ -549,10 +549,10 @@ function moveToPost(mode, noscroll) {
} }
if (mode == "next") { if (mode == "next") {
if (next_id || active_post_id) { if (next_id || getActiveArticleId()) {
if (isCdmMode()) { if (isCdmMode()) {
var article = $("RROW-" + active_post_id); var article = $("RROW-" + getActiveArticleId());
var ctr = $("headlines-frame"); var ctr = $("headlines-frame");
if (!noscroll && article && article.offsetTop + article.offsetHeight > if (!noscroll && article && article.offsetTop + article.offsetHeight >
@ -562,7 +562,7 @@ function moveToPost(mode, noscroll) {
} else if (next_id) { } else if (next_id) {
cdmExpandArticle(next_id); cdmExpandArticle(next_id);
cdmScrollToArticleId(next_id); cdmScrollToArticleId(next_id, noscroll);
} }
} else if (next_id) { } else if (next_id) {
@ -573,10 +573,10 @@ function moveToPost(mode, noscroll) {
} }
if (mode == "prev") { if (mode == "prev") {
if (prev_id || active_post_id) { if (prev_id || getActiveArticleId()) {
if (isCdmMode()) { if (isCdmMode()) {
var article = $("RROW-" + active_post_id); var article = $("RROW-" + getActiveArticleId());
var prev_article = $("RROW-" + prev_id); var prev_article = $("RROW-" + prev_id);
var ctr = $("headlines-frame"); var ctr = $("headlines-frame");
@ -588,7 +588,7 @@ function moveToPost(mode, noscroll) {
scrollArticle(-ctr.offsetHeight/2); scrollArticle(-ctr.offsetHeight/2);
} else if (prev_id) { } else if (prev_id) {
cdmExpandArticle(prev_id); cdmExpandArticle(prev_id);
cdmScrollToArticleId(prev_id); cdmScrollToArticleId(prev_id, noscroll);
} }
} else if (prev_id) { } else if (prev_id) {
correctHeadlinesOffset(prev_id); correctHeadlinesOffset(prev_id);
@ -1148,16 +1148,15 @@ function editArticleTags(id) {
} }
function cdmScrollToArticleId(id) { function cdmScrollToArticleId(id, force) {
try { try {
var ctr = $("headlines-frame"); var ctr = $("headlines-frame");
var e = $("RROW-" + id); var e = $("RROW-" + id);
if (!e || !ctr) return; if (!e || !ctr) return;
if (e.offsetTop+e.offsetHeight > (ctr.scrollTop+ctr.offsetHeight) || if (force || e.offsetTop+e.offsetHeight > (ctr.scrollTop+ctr.offsetHeight) ||
e.offsetTop < ctr.scrollTop) { e.offsetTop < ctr.scrollTop) {
ctr.scrollTop = e.offsetTop; ctr.scrollTop = e.offsetTop;
} }
@ -1166,8 +1165,12 @@ function cdmScrollToArticleId(id) {
} }
} }
function setActiveArticleId(id) {
_active_article_id = id;
}
function getActiveArticleId() { function getActiveArticleId() {
return active_post_id; return _active_article_id;
} }
function postMouseIn(id) { function postMouseIn(id) {
@ -1335,21 +1338,21 @@ function cdmExpandArticle(id) {
hideAuxDlg(); hideAuxDlg();
var elem = $("CICD-" + active_post_id); var elem = $("CICD-" + getActiveArticleId());
if (id == active_post_id && Element.visible(elem)) if (id == getActiveArticleId() && Element.visible(elem))
return true; return true;
selectArticles("none"); selectArticles("none");
var old_offset = $("RROW-" + id).offsetTop; var old_offset = $("RROW-" + id).offsetTop;
if (active_post_id && elem && !getInitParam("cdm_expanded")) { if (getActiveArticleId() && elem && !getInitParam("cdm_expanded")) {
Element.hide(elem); Element.hide(elem);
Element.show("CEXC-" + active_post_id); Element.show("CEXC-" + getActiveArticleId());
} }
active_post_id = id; setActiveArticleId(id);
elem = $("CICD-" + id); elem = $("CICD-" + id);
@ -1445,7 +1448,9 @@ function dismissArticle(id) {
new Effect.Fade(elem, {duration : 0.5}); new Effect.Fade(elem, {duration : 0.5});
active_post_id = false; if (id == getActiveArticleId()) {
setActiveArticleId(0);
}
} catch (e) { } catch (e) {
exception_error("dismissArticle", e); exception_error("dismissArticle", e);
@ -1463,7 +1468,7 @@ function dismissSelectedArticles() {
var elem = $("RROW-" + ids[i]); var elem = $("RROW-" + ids[i]);
if (elem.className && elem.hasClassName("Selected") && if (elem.className && elem.hasClassName("Selected") &&
ids[i] != active_post_id) { ids[i] != getActiveArticleId()) {
new Effect.Fade(elem, {duration : 0.5}); new Effect.Fade(elem, {duration : 0.5});
sel.push(ids[i]); sel.push(ids[i]);
} else { } else {
@ -1545,7 +1550,7 @@ function cdmClicked(event, id) {
if (elem) if (elem)
elem.removeClassName("Unread"); elem.removeClassName("Unread");
active_post_id = id; setActiveArticleId(id);
if (article_is_unread) { if (article_is_unread) {
decrementFeedCounter(getActiveFeedId(), activeFeedIsCat()); decrementFeedCounter(getActiveFeedId(), activeFeedIsCat());

Loading…
Cancel
Save