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