Skip to content
This repository was archived by the owner on Jun 26, 2020. It is now read-only.

Commit ee6cc95

Browse files
authored
Merge pull request #30 from ckeditor/t/29
Other: Switched to handling deletion around widgets by using the `delete` event instead of listening directly on key events. Closes #29.
2 parents 5bfd6bd + 748bf29 commit ee6cc95

File tree

3 files changed

+422
-437
lines changed

3 files changed

+422
-437
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"@ckeditor/ckeditor5-theme-lark": "^1.0.0-alpha.2"
1414
},
1515
"devDependencies": {
16+
"@ckeditor/ckeditor5-typing": "^1.0.0-alpha.2",
1617
"eslint": "^4.8.0",
1718
"eslint-config-ckeditor5": "^1.0.7",
1819
"husky": "^0.14.3",

src/widget.js

+9-11
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ export default class Widget extends Plugin {
8484

8585
// Handle custom keydown behaviour.
8686
this.listenTo( viewDocument, 'keydown', ( ...args ) => this._onKeydown( ...args ), { priority: 'high' } );
87+
88+
// Handle custom delete behaviour.
89+
this.listenTo( viewDocument, 'delete', ( evt, data ) => {
90+
if ( this._handleDelete( data.direction == 'forward' ) ) {
91+
data.preventDefault();
92+
evt.stop();
93+
}
94+
}, { priority: 'high' } );
8795
}
8896

8997
/**
@@ -141,9 +149,7 @@ export default class Widget extends Plugin {
141149

142150
// Checks if the keys were handled and then prevents the default event behaviour and stops
143151
// the propagation.
144-
if ( isDeleteKeyCode( keyCode ) ) {
145-
wasHandled = this._handleDelete( isForward );
146-
} else if ( isArrowKeyCode( keyCode ) ) {
152+
if ( isArrowKeyCode( keyCode ) ) {
147153
wasHandled = this._handleArrowKeys( isForward );
148154
} else if ( isSelectAllKeyCode( domEventData ) ) {
149155
wasHandled = this._selectAllNestedEditableContent() || this._selectAllContent();
@@ -356,14 +362,6 @@ function isArrowKeyCode( keyCode ) {
356362
keyCode == keyCodes.arrowdown;
357363
}
358364

359-
// Returns 'true' if provided key code represents one of the delete keys: delete or backspace.
360-
//
361-
// @param {Number} keyCode
362-
// @returns {Boolean}
363-
function isDeleteKeyCode( keyCode ) {
364-
return keyCode == keyCodes.delete || keyCode == keyCodes.backspace;
365-
}
366-
367365
// Returns 'true' if provided (DOM) key event data corresponds with the Ctrl+A keystroke.
368366
//
369367
// @param {module:engine/view/observer/keyobserver~KeyEventData} domEventData

0 commit comments

Comments
 (0)