djmaze 2020-10-09 10:31:44 +02:00
parent ac535b1d03
commit ee23a5553e
9 changed files with 46 additions and 37 deletions

View file

@ -273,7 +273,7 @@ class Selector {
} }
}); });
shortcuts.add('enter', '', keyScope, () => { shortcuts.add('enter,open', '', keyScope, () => {
const focused = this.focusedItem(); const focused = this.focusedItem();
if (focused && !focused.selected()) { if (focused && !focused.selected()) {
this.actionClick(focused); this.actionClick(focused);

View file

@ -1171,7 +1171,7 @@ class ComposePopupView extends AbstractViewNext {
return false; return false;
}); });
shortcuts.add('escape', '', KeyState.Compose, () => { shortcuts.add('escape,close', '', KeyState.Compose, () => {
this.skipCommand(); this.skipCommand();
return false; return false;
}); });
@ -1185,6 +1185,10 @@ class ComposePopupView extends AbstractViewNext {
this.saveCommand(); this.saveCommand();
return false; return false;
}); });
shortcuts.add('save', KeyState.Compose, () => {
this.saveCommand();
return false;
});
} }
if (Settings.app('allowCtrlEnterOnCompose')) { if (Settings.app('allowCtrlEnterOnCompose')) {
@ -1193,11 +1197,13 @@ class ComposePopupView extends AbstractViewNext {
return false; return false;
}); });
} }
shortcuts.add('mailsend', '', KeyState.Compose, () => {
this.sendCommand();
return false;
});
shortcuts.add('escape', 'shift', KeyState.Compose, () => { shortcuts.add('escape,close', 'shift', KeyState.Compose, () => {
if (this.modalVisibility()) { this.modalVisibility() && this.tryToClosePopup();
this.tryToClosePopup();
}
return false; return false;
}); });

View file

@ -89,7 +89,7 @@ class AbstractSystemDropDownUserView extends AbstractViewNext {
}); });
// shortcuts help // shortcuts help
shortcuts.add('/', 'shift', [KeyState.MessageList, KeyState.MessageView, KeyState.Settings], () => { shortcuts.add('?,f1,help', '', [KeyState.MessageList, KeyState.MessageView, KeyState.Settings], () => {
if (this.viewModelVisible) { if (this.viewModelVisible) {
showScreenPopup(require('View/Popup/KeyboardShortcutsHelp')); showScreenPopup(require('View/Popup/KeyboardShortcutsHelp'));
return false; return false;

View file

@ -145,7 +145,7 @@ class FolderListMailBoxUserView extends AbstractViewNext {
return false; return false;
}); });
shortcuts.add('enter', '', KeyState.FolderList, () => { shortcuts.add('enter,open', '', KeyState.FolderList, () => {
const item = qs('.b-folders .e-item .e-link:not(.hidden).focused'); const item = qs('.b-folders .e-item .e-link:not(.hidden).focused');
if (item) { if (item) {
AppStore.focusedState(Focused.MessageList); AppStore.focusedState(Focused.MessageList);

View file

@ -728,7 +728,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
} }
initShortcuts() { initShortcuts() {
shortcuts.add('enter', '', KeyState.MessageList, () => { shortcuts.add('enter,open', '', KeyState.MessageList, () => {
if (this.message() && this.useAutoSelect()) { if (this.message() && this.useAutoSelect()) {
dispatchEvent(new CustomEvent('mailbox.message-view.toggle-full-screen')); dispatchEvent(new CustomEvent('mailbox.message-view.toggle-full-screen'));
return false; return false;
@ -772,7 +772,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
if (Settings.capa(Capa.Composer)) { if (Settings.capa(Capa.Composer)) {
// write/compose (open compose popup) // write/compose (open compose popup)
shortcuts.add('w,c', '', [KeyState.MessageList, KeyState.MessageView], () => { shortcuts.add('w,c,new', '', [KeyState.MessageList, KeyState.MessageView], () => {
showScreenPopup(require('View/Popup/Compose')); showScreenPopup(require('View/Popup/Compose'));
return false; return false;
}); });
@ -827,7 +827,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
} }
if (Settings.capa(Capa.Composer)) { if (Settings.capa(Capa.Composer)) {
shortcuts.add('f', 'shift', [KeyState.MessageList, KeyState.MessageView], () => { shortcuts.add('f,mailforward', 'shift', [KeyState.MessageList, KeyState.MessageView], () => {
this.multyForwardCommand(); this.multyForwardCommand();
return false; return false;
}); });

View file

@ -535,13 +535,13 @@ class MessageViewMailBoxUserView extends AbstractViewNext {
shortcuts.add('escape,backspace', '', KeyState.MessageView, this.escShortcuts.bind(this)); shortcuts.add('escape,backspace', '', KeyState.MessageView, this.escShortcuts.bind(this));
// fullscreen // fullscreen
shortcuts.add('enter', '', KeyState.MessageView, () => { shortcuts.add('enter,open', '', KeyState.MessageView, () => {
this.toggleFullScreen(); this.toggleFullScreen();
return false; return false;
}); });
// reply // reply
shortcuts.add('r', '', [KeyState.MessageList, KeyState.MessageView], () => { shortcuts.add('r,mailreply', '', [KeyState.MessageList, KeyState.MessageView], () => {
if (MessageStore.message()) { if (MessageStore.message()) {
this.replyCommand(); this.replyCommand();
return false; return false;
@ -555,12 +555,18 @@ class MessageViewMailBoxUserView extends AbstractViewNext {
this.replyAllCommand(); this.replyAllCommand();
return false; return false;
} }
return true;
});
shortcuts.add('mailreply', 'shift', [KeyState.MessageList, KeyState.MessageView], () => {
if (MessageStore.message()) {
this.replyAllCommand();
return false;
}
return true; return true;
}); });
// forward // forward
shortcuts.add('f', '', [KeyState.MessageList, KeyState.MessageView], () => { shortcuts.add('f,mailforward', '', [KeyState.MessageList, KeyState.MessageView], () => {
if (MessageStore.message()) { if (MessageStore.message()) {
this.forwardCommand(); this.forwardCommand();
return false; return false;
@ -598,10 +604,8 @@ class MessageViewMailBoxUserView extends AbstractViewNext {
}); });
// print // print
shortcuts.add('p', 'meta', [KeyState.MessageView, KeyState.MessageList], () => { shortcuts.add('p,printscreen', 'meta', [KeyState.MessageView, KeyState.MessageList], () => {
if (this.message()) { this.message() && this.message().printMessage();
this.message().printMessage();
}
return false; return false;
}); });

View file

@ -33,10 +33,10 @@ const
keydown = event => { keydown = event => {
const key = (event.key||event.code||'').toLowerCase(); const key = (event.key||event.code||'').toLowerCase();
if (scope[key] && win.shortcuts.filter(event)) { if (scope[key] && win.shortcuts.filter(event.target)) {
fire(scope[key], event); fire(scope[key], event);
} }
if (!event.defaultPrevented && _scope !== 'all' && _scopes.all[key] && win.shortcuts.filter(event)) { if (!event.defaultPrevented && _scope !== 'all' && _scopes.all[key] && win.shortcuts.filter(event.target)) {
fire(_scopes.all[key], event); fire(_scopes.all[key], event);
} }
}; };
@ -45,8 +45,6 @@ let
scope = {}, scope = {},
_scope = 'all'; _scope = 'all';
doc.addEventListener('keydown', keydown);
win.shortcuts = { win.shortcuts = {
on: () => doc.addEventListener('keydown', keydown), on: () => doc.addEventListener('keydown', keydown),
off: () => doc.removeEventListener('keydown', keydown), off: () => doc.removeEventListener('keydown', keydown),
@ -81,8 +79,7 @@ win.shortcuts = {
getScope: () => _scope, getScope: () => _scope,
getMetaKey: () => meta, getMetaKey: () => meta,
// ignore keydown in any element that supports keyboard input // ignore keydown in any element that supports keyboard input
filter: event => !(event.target.matches filter: node => !(!node.closest || node.closest('input,select,textarea,[contenteditable]'))
&& (event.target.matches('input,select,textarea') || event.target.closest('[contenteditable]')))
}; };
win.shortcuts.on(); win.shortcuts.on();

View file

@ -25,11 +25,11 @@
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<tbody> <tbody>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_USER_DROPDOWN"></td><td>` (tilde)</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_USER_DROPDOWN"></td><td>` (tilde)</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY"></td><td>R</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY"></td><td>R, Reply</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY_ALL"></td><td>A</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_REPLY_ALL"></td><td>A, Shift + Reply</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD"></td><td>F</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD"></td><td>F, Fwd</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD_MULTIPLY"></td><td>Shift + F</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FORWARD_MULTIPLY"></td><td>Shift + F, Shift + Fwd</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_HELP"></td><td>?, Shift + /</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_HELP"></td><td>F1, Help</td></tr>
</tbody> </tbody>
</table> </table>
@ -59,11 +59,11 @@
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<tbody> <tbody>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_TOGGLE"></td><td>Enter</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_TOGGLE"></td><td>Enter, Open</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_BLOCKQUOTES_TOGGLE"></td><td>B</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_BLOCKQUOTES_TOGGLE"></td><td>B</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_PRINT"></td><td>Ctrl + P, ⌘ + P</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_PRINT"></td><td>Ctrl + P, ⌘ + P</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_EXIT_FULLSCREEN"></td><td>Esc</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_EXIT_FULLSCREEN"></td><td>Esc, Close</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_MESSAGE"></td><td>Esc</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_MESSAGE"></td><td>Esc, Close</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_LIST"></td><td>Tab, Shift + Tab, Esc</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_LIST"></td><td>Tab, Shift + Tab, Esc</td></tr>
</tbody> </tbody>
</table> </table>
@ -73,12 +73,12 @@
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<tbody> <tbody>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_COMPOSE_POPUP"></td><td>W, C</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_COMPOSE_POPUP"></td><td>W, C, New</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_IDENTITIES_DROPDOWN"></td><td>` (tilde), Ctrl + `, ⌘ + `</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_OPEN_IDENTITIES_DROPDOWN"></td><td>` (tilde), Ctrl + `, ⌘ + `</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SAVE_MESSAGE"></td><td>Ctrl + S, ⌘ + S</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SAVE_MESSAGE"></td><td>Ctrl + S, ⌘ + S, Save</td></tr>
<!--<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SEND_MESSAGE"></td><td>Ctrl + Enter, ⌘ + Enter</td></tr>--> <!--<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SEND_MESSAGE"></td><td>Ctrl + Enter, ⌘ + Enter</td></tr>-->
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_MINIMIZE_COMPOSE_POPUP"></td><td>Esc</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_MINIMIZE_COMPOSE_POPUP"></td><td>Esc, Close</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_COMPOSE"></td><td>Shift + Esc</td></tr> <tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_COMPOSE"></td><td>Shift + Esc, Shift + Close</td></tr>
</tbody> </tbody>
</table> </table>

View file

@ -1675,7 +1675,9 @@ keyHandlers[ ctrlKey + '[' ] = changeIndentationLevel( 'decrease' );
keyHandlers[ ctrlKey + ']' ] = changeIndentationLevel( 'increase' ); keyHandlers[ ctrlKey + ']' ] = changeIndentationLevel( 'increase' );
keyHandlers[ ctrlKey + 'd' ] = mapKeyTo( 'toggleCode' ); keyHandlers[ ctrlKey + 'd' ] = mapKeyTo( 'toggleCode' );
keyHandlers[ ctrlKey + 'y' ] = mapKeyTo( 'redo' ); keyHandlers[ ctrlKey + 'y' ] = mapKeyTo( 'redo' );
keyHandlers[ 'redo' ] = mapKeyTo( 'redo' );
keyHandlers[ ctrlKey + 'z' ] = mapKeyTo( 'undo' ); keyHandlers[ ctrlKey + 'z' ] = mapKeyTo( 'undo' );
keyHandlers[ 'undo' ] = mapKeyTo( 'undo' );
keyHandlers[ ctrlKey + 'shift-z' ] = mapKeyTo( 'redo' ); keyHandlers[ ctrlKey + 'shift-z' ] = mapKeyTo( 'redo' );
let fontSizes = { let fontSizes = {