FIX: Lock keyboard controls for navigating posts to eyeline
This commit is contained in:
parent
43e7890dcf
commit
74a454c203
|
@ -93,7 +93,6 @@ export default MountWidget.extend({
|
||||||
// $('.debug-eyeline').css({ height: '1px', width: '100%', backgroundColor: 'blue', position: 'absolute', top: `${topCheck}px` });
|
// $('.debug-eyeline').css({ height: '1px', width: '100%', backgroundColor: 'blue', position: 'absolute', top: `${topCheck}px` });
|
||||||
|
|
||||||
let allAbove = true;
|
let allAbove = true;
|
||||||
|
|
||||||
let bottomView = topView;
|
let bottomView = topView;
|
||||||
while (bottomView < $posts.length) {
|
while (bottomView < $posts.length) {
|
||||||
const post = $posts[bottomView];
|
const post = $posts[bottomView];
|
||||||
|
@ -160,7 +159,8 @@ export default MountWidget.extend({
|
||||||
this.sendAction('bottomVisibleChanged', { post: last, refresh });
|
this.sendAction('bottomVisibleChanged', { post: last, refresh });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._currentPost !== currentPost) {
|
const changedPost = this._currentPost !== currentPost;
|
||||||
|
if (changedPost) {
|
||||||
this._currentPost = currentPost;
|
this._currentPost = currentPost;
|
||||||
const post = posts.objectAt(currentPost);
|
const post = posts.objectAt(currentPost);
|
||||||
this.sendAction('currentPostChanged', { post });
|
this.sendAction('currentPostChanged', { post });
|
||||||
|
@ -169,7 +169,7 @@ export default MountWidget.extend({
|
||||||
if (percent !== null) {
|
if (percent !== null) {
|
||||||
if (percent > 1.0) { percent = 1.0; }
|
if (percent > 1.0) { percent = 1.0; }
|
||||||
|
|
||||||
if (this._currentPercent !== percent) {
|
if (changedPost || (this._currentPercent !== percent)) {
|
||||||
this._currentPercent = percent;
|
this._currentPercent = percent;
|
||||||
this.sendAction('currentPostScrolled', { percent });
|
this.sendAction('currentPostScrolled', { percent });
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import DiscourseURL from 'discourse/lib/url';
|
import DiscourseURL from 'discourse/lib/url';
|
||||||
import Composer from 'discourse/models/composer';
|
import Composer from 'discourse/models/composer';
|
||||||
|
import { scrollTopFor } from 'discourse/lib/offset-calculator';
|
||||||
|
|
||||||
const bindings = {
|
const bindings = {
|
||||||
'!': {postAction: 'showFlags'},
|
'!': {postAction: 'showFlags'},
|
||||||
|
@ -298,12 +299,19 @@ export default {
|
||||||
|
|
||||||
if ($article.is('.topic-post')) {
|
if ($article.is('.topic-post')) {
|
||||||
$('a.tabLoc', $article).focus();
|
$('a.tabLoc', $article).focus();
|
||||||
}
|
this._scrollToPost($article);
|
||||||
|
|
||||||
this._scrollList($article, direction);
|
} else {
|
||||||
|
this._scrollList($article, direction);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_scrollToPost($article) {
|
||||||
|
const pos = $article.offset();
|
||||||
|
$(window).scrollTop(Math.ceil(pos.top - scrollTopFor(pos.top)));
|
||||||
|
},
|
||||||
|
|
||||||
_scrollList($article) {
|
_scrollList($article) {
|
||||||
// Try to keep the article on screen
|
// Try to keep the article on screen
|
||||||
const pos = $article.offset();
|
const pos = $article.offset();
|
||||||
|
|
Loading…
Reference in New Issue