Skip to content

Commit 33d0540

Browse files
authored
Merge pull request #1573 from shashank1207/scroll-by-space
Add setting to change space needed to scroll by pressing space
2 parents 05c8b66 + a2a1733 commit 33d0540

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

assets/javascripts/app/settings.coffee

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ class app.Settings
1313
'size'
1414
'tips'
1515
'autoInstall'
16+
'spaceScroll'
17+
'spaceTimeout'
1618
]
1719

1820
INTERNAL_KEYS = [
@@ -33,6 +35,8 @@ class app.Settings
3335
schema: 1
3436
analyticsConsent: false
3537
theme: 'auto'
38+
spaceScroll: 1
39+
spaceTimeout: 0.5
3640

3741
constructor: ->
3842
@store = new CookiesStore

assets/javascripts/app/shortcuts.coffee

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ class app.Shortcuts
1818
swapArrowKeysBehavior: ->
1919
app.settings.get('arrowScroll')
2020

21+
spaceScroll: ->
22+
app.settings.get('spaceScroll')
23+
2124
showTip: ->
2225
app.showTip('KeyNav')
2326
@showTip = null
2427

28+
spaceTimeout: ->
29+
app.settings.get('spaceTimeout')
30+
2531
onKeydown: (event) =>
2632
return if @buggyEvent(event)
2733
result = if event.ctrlKey or event.metaKey
@@ -59,7 +65,7 @@ class app.Shortcuts
5965
@trigger 'escape'
6066
false
6167
when 32
62-
if event.target.type is 'search' and (not @lastKeypress or @lastKeypress < Date.now() - 500)
68+
if event.target.type is 'search' and @spaceScroll() and (not @lastKeypress or @lastKeypress < Date.now() - (@spaceTimeout() * 1000))
6369
@trigger 'pageDown'
6470
false
6571
when 33

assets/javascripts/templates/pages/settings_tmpl.coffee

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ app.templates.settingsPage = (settings) -> """
5656
<input type="checkbox" form="settings" name="arrowScroll" value="1"#{if settings.arrowScroll then ' checked' else ''}>Use arrow keys to scroll the main content area
5757
<small>With this checked, use <code class="_label">shift</code> + <code class="_label">&uarr;</code><code class="_label">&darr;</code><code class="_label">&larr;</code><code class="_label">&rarr;</code> to navigate the sidebar.</small>
5858
</label>
59+
<label class="_settings-label">
60+
<input type="checkbox" form="settings" name="spaceScroll" value="1"#{if settings.spaceScroll then ' checked' else ''}>Use spacebar to scroll during search
61+
</label>
62+
<label class="_settings-label">
63+
<input type="number" form="settings" name="spaceTimeout" min="0" max="5" value="#{settings.spaceTimeout}"> Delay until you can scroll by pressing space
64+
<small>Time in seconds</small>
65+
</label>
5966
</div>
6067
</div>
6168

assets/javascripts/views/content/settings_page.coffee

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class app.views.SettingsPage extends app.View
1616
settings.arrowScroll = app.settings.get('arrowScroll')
1717
settings.autoInstall = app.settings.get('autoInstall')
1818
settings.analyticsConsent = app.settings.get('analyticsConsent')
19+
settings.spaceScroll = app.settings.get('spaceScroll')
20+
settings.spaceTimeout = app.settings.get('spaceTimeout')
1921
settings.autoSupported = app.settings.autoSupported
2022
settings[layout] = app.settings.hasLayout(layout) for layout in app.settings.LAYOUTS
2123
settings
@@ -40,6 +42,13 @@ class app.views.SettingsPage extends app.View
4042
resetAnalytics() unless enable
4143
return
4244

45+
toggleSpaceScroll: (enable) ->
46+
app.settings.set('spaceScroll', if enable then 1 else 0)
47+
return
48+
49+
setScrollTimeout: (value) ->
50+
app.settings.set('spaceTimeout', value)
51+
4352
toggle: (name, enable) ->
4453
app.settings.set(name, enable)
4554
return
@@ -85,6 +94,10 @@ class app.views.SettingsPage extends app.View
8594
@import input.files[0], input
8695
when 'analyticsConsent'
8796
@toggleAnalyticsConsent input.checked
97+
when 'spaceScroll'
98+
@toggleSpaceScroll input.checked
99+
when 'spaceTimeout'
100+
@setScrollTimeout input.value
88101
else
89102
@toggle input.name, input.checked
90103
return

0 commit comments

Comments
 (0)