summaryrefslogtreecommitdiffstats
path: root/js/gui/KeyboardShortcuts.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/gui/KeyboardShortcuts.js')
-rw-r--r--js/gui/KeyboardShortcuts.js17
1 files changed, 15 insertions, 2 deletions
diff --git a/js/gui/KeyboardShortcuts.js b/js/gui/KeyboardShortcuts.js
index df02f2fd3..41bc77e82 100644
--- a/js/gui/KeyboardShortcuts.js
+++ b/js/gui/KeyboardShortcuts.js
@@ -34,7 +34,20 @@
);
};
- var scrollToNavigationElement = function (elem, scrollArea) {
+ var isInScrollView = function (elem, scrollArea) {
+ // offset().top adds the navigation bar too so we have to subract it
+ var elemTop = elem.offset().top - scrollArea.offset().top;
+ var elemBottom = elemTop + elem.height();
+
+ var areaBottom = scrollArea.height();
+
+ return elemTop >= 0 && elemBottom < areaBottom;
+ };
+
+ var scrollToNavigationElement = function (elem, scrollArea, toTop) {
+ if (elem.length === 0 || (!toTop && isInScrollView(elem, scrollArea))) {
+ return;
+ }
scrollArea.scrollTop(
elem.offset().top - scrollArea.offset().top + scrollArea.scrollTop()
);
@@ -42,7 +55,7 @@
var scrollToActiveNavigationEntry = function (navigationArea) {
var element = navigationArea.find('.active');
- scrollToNavigationElement(element, navigationArea.children('ul'));
+ scrollToNavigationElement(element, navigationArea.children('ul'), true);
};
var reloadFeed = function (navigationArea) {