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();
if (focused && !focused.selected()) {
this.actionClick(focused);

View file

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

View file

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

View file

@ -145,7 +145,7 @@ class FolderListMailBoxUserView extends AbstractViewNext {
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');
if (item) {
AppStore.focusedState(Focused.MessageList);

View file

@ -728,7 +728,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
}
initShortcuts() {
shortcuts.add('enter', '', KeyState.MessageList, () => {
shortcuts.add('enter,open', '', KeyState.MessageList, () => {
if (this.message() && this.useAutoSelect()) {
dispatchEvent(new CustomEvent('mailbox.message-view.toggle-full-screen'));
return false;
@ -772,7 +772,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
if (Settings.capa(Capa.Composer)) {
// 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'));
return false;
});
@ -827,7 +827,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
}
if (Settings.capa(Capa.Composer)) {
shortcuts.add('f', 'shift', [KeyState.MessageList, KeyState.MessageView], () => {
shortcuts.add('f,mailforward', 'shift', [KeyState.MessageList, KeyState.MessageView], () => {
this.multyForwardCommand();
return false;
});

View file

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

View file

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

View file

@ -25,11 +25,11 @@
<table class="table table-striped table-bordered">
<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_REPLY"></td><td>R</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_FORWARD"></td><td>F</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_HELP"></td><td>?, Shift + /</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, Shift + Reply</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, Shift + Fwd</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_HELP"></td><td>F1, Help</td></tr>
</tbody>
</table>
@ -59,11 +59,11 @@
<table class="table table-striped table-bordered">
<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_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_CLOSE_MESSAGE"></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, Close</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_LIST"></td><td>Tab, Shift + Tab, Esc</td></tr>
</tbody>
</table>
@ -73,12 +73,12 @@
<table class="table table-striped table-bordered">
<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_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_MINIMIZE_COMPOSE_POPUP"></td><td>Esc</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_MINIMIZE_COMPOSE_POPUP"></td><td>Esc, Close</td></tr>
<tr><td class="i18n" data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_COMPOSE"></td><td>Shift + Esc, Shift + Close</td></tr>
</tbody>
</table>

View file

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