feat(shortcuts): Pageup/dn in message list, shift+pageup/dn in thread list

This commit is contained in:
Ben Gotow 2015-10-29 20:34:43 -07:00
parent 6170b34533
commit 6bee127134
4 changed files with 21 additions and 3 deletions

View file

@ -77,6 +77,8 @@ class MessageList extends React.Component
'application:reply': => @_createReplyOrUpdateExistingDraft('reply')
'application:reply-all': => @_createReplyOrUpdateExistingDraft('reply-all')
'application:forward': => @_onForward()
'core:messages-page-up': => @_onScrollByPage(-1)
'core:messages-page-down': => @_onScrollByPage(1)
@command_unsubscriber = atom.commands.add('body', commands)
@ -366,6 +368,10 @@ class MessageList extends React.Component
else
throw new Error("onChildScrollRequest: expected clientId or rect")
_onScrollByPage: (direction) =>
height = React.findDOMNode(@refs.messageWrap).clientHeight
@refs.messageWrap.scrollTop += height * direction
_onChange: =>
newState = @_getStateFromStores()
if @state.currentThread isnt newState.currentThread

View file

@ -10,9 +10,14 @@
'up' : 'core:previous-item'
'down' : 'core:next-item'
'enter' : 'core:focus-item'
'delete': 'core:remove-from-view'
'delete' : 'core:remove-from-view'
'backspace': 'core:remove-from-view'
'pageup' : 'core:messages-page-up'
'pagedown' : 'core:messages-page-down'
'shift-pageup' : 'core:list-page-up'
'shift-pagedown' : 'core:list-page-down'
# Default cross-platform core behaviors
'left': 'core:move-left'
'right': 'core:move-right'
@ -20,8 +25,6 @@
'shift-down': 'core:select-down'
'shift-left': 'core:select-left'
'shift-right': 'core:select-right'
'shift-pageup': 'core:select-page-up'
'shift-pagedown': 'core:select-page-down'
'shift-delete': 'core:cut'
# Inputs are native by default.

View file

@ -173,6 +173,10 @@ class ListTabular extends React.Component
scrollTo: (node) =>
@refs.container.scrollTo(node)
scrollByPage: (direction) =>
height = React.findDOMNode(@refs.container).clientHeight
@refs.container.scrollTop += height * direction
ListTabular.Item = ListTabularItem
ListTabular.Column = ListColumn

View file

@ -76,6 +76,8 @@ class MultiselectList extends React.Component
'core:previous-item': => @_onShift(-1)
'core:select-down': => @_onShift(1, {select: true})
'core:select-up': => @_onShift(-1, {select: true})
'core:list-page-up': => @_onScrollByPage(-1)
'core:list-page-down': => @_onScrollByPage(1)
'application:pop-sheet': => @_onDeselect()
Object.keys(props.commands).forEach (key) =>
@ -163,6 +165,9 @@ class MultiselectList extends React.Component
return unless @state.handler
@state.handler.onShift(delta, options)
_onScrollByPage: (delta) =>
@refs.list.scrollByPage(delta)
_onChange: =>
@setState(@_getStateFromStores())