diff --git a/app/assets/javascripts/app/controllers/editor.js b/app/assets/javascripts/app/controllers/editor.js index 9da0b87c1..a02f33bba 100644 --- a/app/assets/javascripts/app/controllers/editor.js +++ b/app/assets/javascripts/app/controllers/editor.js @@ -814,7 +814,7 @@ angular.module('app') } }) - this.deleteKeyObserver = keyboardManager.addKeyObserver({ + this.trashKeyObserver = keyboardManager.addKeyObserver({ key: KeyboardManager.KeyBackspace, notElementIds: ["note-text-editor", "note-title-editor"], modifiers: [KeyboardManager.KeyModifierMeta], @@ -825,6 +825,18 @@ angular.module('app') }, }) + this.deleteKeyObserver = keyboardManager.addKeyObserver({ + key: KeyboardManager.KeyBackspace, + notElementIds: ["note-text-editor", "note-title-editor"], + modifiers: [KeyboardManager.KeyModifierMeta, KeyboardManager.KeyModifierShift], + onKeyDown: (event) => { + event.preventDefault(); + $timeout(() => { + this.deleteNote(true); + }); + }, + }) + /* Editor Customization */ diff --git a/app/assets/javascripts/app/controllers/notes.js b/app/assets/javascripts/app/controllers/notes.js index 899b3e2a1..924bfe4a0 100644 --- a/app/assets/javascripts/app/controllers/notes.js +++ b/app/assets/javascripts/app/controllers/notes.js @@ -398,7 +398,6 @@ angular.module('app') this.noteFilter = {text : ''}; - this.onFilterEnter = function() { // For Desktop, performing a search right away causes input to lose focus. // We wait until user explicity hits enter before highlighting desktop search results. diff --git a/app/assets/javascripts/app/services/keyboardManager.js b/app/assets/javascripts/app/services/keyboardManager.js index d50736dd9..c6715cb94 100644 --- a/app/assets/javascripts/app/services/keyboardManager.js +++ b/app/assets/javascripts/app/services/keyboardManager.js @@ -15,13 +15,19 @@ class KeyboardManager { KeyboardManager.KeyEventDown = "KeyEventDown"; KeyboardManager.KeyEventUp = "KeyEventUp"; + KeyboardManager.AllModifiers = [ + KeyboardManager.KeyModifierShift, + KeyboardManager.KeyModifierCtrl, + KeyboardManager.KeyModifierMeta, + KeyboardManager.KeyModifierAlt + ] + window.addEventListener('keydown', this.handleKeyDown.bind(this)); window.addEventListener('keyup', this.handleKeyUp.bind(this)); } - eventMatchesKeyAndModifiers(event, key, modifiers = []) { - - for(let modifier of modifiers) { + modifiersForEvent(event) { + let eventModifiers = KeyboardManager.AllModifiers.filter((modifier) => { // For a modifier like ctrlKey, must check both event.ctrlKey and event.key. // That's because on keyup, event.ctrlKey would be false, but event.key == Control would be true. let matches = ( @@ -31,7 +37,21 @@ class KeyboardManager { ((event.shiftKey || event.key == KeyboardManager.KeyModifierShift) && modifier === KeyboardManager.KeyModifierShift) ) - if(!matches) { + return matches; + }) + + return eventModifiers; + } + + eventMatchesKeyAndModifiers(event, key, modifiers = []) { + let eventModifiers = this.modifiersForEvent(event); + + if(eventModifiers.length != modifiers.length) { + return false; + } + + for(let modifier of modifiers) { + if(!eventModifiers.includes(modifier)) { return false; } } @@ -41,7 +61,6 @@ class KeyboardManager { return true; } - return key == event.key; }