diff --git a/assets/javascripts/app/settings.coffee b/assets/javascripts/app/settings.coffee index d3fc93e1..b885fd5e 100644 --- a/assets/javascripts/app/settings.coffee +++ b/assets/javascripts/app/settings.coffee @@ -13,6 +13,8 @@ class app.Settings 'size' 'tips' 'autoInstall' + 'spaceScroll' + 'spaceTimeout' ] INTERNAL_KEYS = [ @@ -33,6 +35,8 @@ class app.Settings schema: 1 analyticsConsent: false theme: 'auto' + spaceScroll: 1 + spaceTimeout: 0.5 constructor: -> @store = new CookiesStore diff --git a/assets/javascripts/app/shortcuts.coffee b/assets/javascripts/app/shortcuts.coffee index fb0c7220..28ddf0b8 100644 --- a/assets/javascripts/app/shortcuts.coffee +++ b/assets/javascripts/app/shortcuts.coffee @@ -18,10 +18,16 @@ class app.Shortcuts swapArrowKeysBehavior: -> app.settings.get('arrowScroll') + spaceScroll: -> + app.settings.get('spaceScroll') + showTip: -> app.showTip('KeyNav') @showTip = null + spaceTimeout: -> + app.settings.get('spaceTimeout') + onKeydown: (event) => return if @buggyEvent(event) result = if event.ctrlKey or event.metaKey @@ -59,7 +65,7 @@ class app.Shortcuts @trigger 'escape' false when 32 - if event.target.type is 'search' and (not @lastKeypress or @lastKeypress < Date.now() - 500) + if event.target.type is 'search' and @spaceScroll() and (not @lastKeypress or @lastKeypress < Date.now() - (@spaceTimeout() * 1000)) @trigger 'pageDown' false when 33 diff --git a/assets/javascripts/templates/pages/settings_tmpl.coffee b/assets/javascripts/templates/pages/settings_tmpl.coffee index efc9c5a1..1428c0c2 100644 --- a/assets/javascripts/templates/pages/settings_tmpl.coffee +++ b/assets/javascripts/templates/pages/settings_tmpl.coffee @@ -56,6 +56,13 @@ app.templates.settingsPage = (settings) -> """ Use arrow keys to scroll the main content area With this checked, use shift + to navigate the sidebar. + + diff --git a/assets/javascripts/views/content/settings_page.coffee b/assets/javascripts/views/content/settings_page.coffee index 2db7c6bc..f0adebf7 100644 --- a/assets/javascripts/views/content/settings_page.coffee +++ b/assets/javascripts/views/content/settings_page.coffee @@ -16,6 +16,8 @@ class app.views.SettingsPage extends app.View settings.arrowScroll = app.settings.get('arrowScroll') settings.autoInstall = app.settings.get('autoInstall') settings.analyticsConsent = app.settings.get('analyticsConsent') + settings.spaceScroll = app.settings.get('spaceScroll') + settings.spaceTimeout = app.settings.get('spaceTimeout') settings.autoSupported = app.settings.autoSupported settings[layout] = app.settings.hasLayout(layout) for layout in app.settings.LAYOUTS settings @@ -40,6 +42,13 @@ class app.views.SettingsPage extends app.View resetAnalytics() unless enable return + toggleSpaceScroll: (enable) -> + app.settings.set('spaceScroll', if enable then 1 else 0) + return + + setScrollTimeout: (value) -> + app.settings.set('spaceTimeout', value) + toggle: (name, enable) -> app.settings.set(name, enable) return @@ -85,6 +94,10 @@ class app.views.SettingsPage extends app.View @import input.files[0], input when 'analyticsConsent' @toggleAnalyticsConsent input.checked + when 'spaceScroll' + @toggleSpaceScroll input.checked + when 'spaceTimeout' + @setScrollTimeout input.value else @toggle input.name, input.checked return