diff --git a/package.json b/package.json
index d558ca76..4b4cbc69 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,7 @@
"@ckeditor/ckeditor5-paragraph": "^10.0.4",
"@ckeditor/ckeditor5-typing": "^11.0.2",
"eslint": "^5.5.0",
- "eslint-config-ckeditor5": "^1.0.7",
+ "eslint-config-ckeditor5": "^1.0.9",
"husky": "^0.14.3",
"lint-staged": "^7.0.0"
},
diff --git a/src/widget.js b/src/widget.js
index c533ac30..300b1caf 100644
--- a/src/widget.js
+++ b/src/widget.js
@@ -9,8 +9,8 @@
import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
import MouseObserver from '@ckeditor/ckeditor5-engine/src/view/observer/mouseobserver';
-import { isWidget, WIDGET_SELECTED_CLASS_NAME, getLabel } from './utils';
-import { keyCodes, getCode, parseKeystroke } from '@ckeditor/ckeditor5-utils/src/keyboard';
+import { getLabel, isWidget, WIDGET_SELECTED_CLASS_NAME } from './utils';
+import { getCode, keyCodes, parseKeystroke } from '@ckeditor/ckeditor5-utils/src/keyboard';
import '../theme/widget.css';
@@ -415,10 +415,15 @@ function isSelectAllKeyCode( domEventData ) {
// @returns {Boolean}
function isInsideNestedEditable( element ) {
while ( element ) {
- if ( !!element && element.is( 'editableElement' ) && !element.is( 'rootElement' ) ) {
+ if ( element.is( 'editableElement' ) && !element.is( 'rootElement' ) ) {
return true;
}
+ // Click on nested widget should select it.
+ if ( isWidget( element ) ) {
+ return false;
+ }
+
element = element.parent;
}
diff --git a/tests/widget.js b/tests/widget.js
index 103cea49..6b79eeb1 100644
--- a/tests/widget.js
+++ b/tests/widget.js
@@ -200,13 +200,13 @@ describe( 'Widget', () => {
expect( viewDocument.selection.fakeSelectionLabel ).to.equal( 'element label' );
} );
- it( 'should add selected class when no only a widget is selected', () => {
+ it( 'should add selected class when other content is selected with widget', () => {
setModelData( model, '[
foo
' + + + '{foo
' + ' ' + ' ' + ']' @@ -1348,5 +1348,31 @@ describe( 'Widget', () => { '' ); } ); + + it( 'should select widget in editable', () => { + model.schema.extend( 'widget', { allowIn: 'nested' } ); + + setModelData( model, '[]