Skip to content

Commit fa71d86

Browse files
committed
Merge branch 't/13397a'
2 parents 168ea63 + 1e654d1 commit fa71d86

File tree

4 files changed

+48
-11
lines changed

4 files changed

+48
-11
lines changed

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Fixed Issues:
1515
* [#13385](http://dev.ckeditor.com/ticket/13385): Fixed: [`editor.getSnapshot()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSnapshot) may return a non-string value.
1616
* [#13422](http://dev.ckeditor.com/ticket/13422): Fixed: A monospaced font should be used in the `<textarea>` holding editor's config in the Toolbar Configurator.
1717
* [#11616](http://dev.ckeditor.com/ticket/11616): [Chrome] Fixed: Resizing the editor while it's not displayed breaks the editable. Fixed also [#9160](http://dev.ckeditor.com/ticket/9160) and [#9715](http://dev.ckeditor.com/ticket/9715).
18+
* [#13397](http://dev.ckeditor.com/ticket/13397): Fixed: Drag&drop a widget inside its nested widget crashes the editor.
1819

1920
## CKEditor 4.5.1
2021

plugins/widget/plugin.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2416,6 +2416,11 @@
24162416
if ( Widget.isDomNestedEditable( el ) )
24172417
return;
24182418

2419+
// Do not allow droping inside the widget being dragged (#13397).
2420+
if ( widgetsRepo._.draggedWidget.wrapper.contains( el ) ) {
2421+
return;
2422+
}
2423+
24192424
// If element is nested editable, make sure widget can be dropped there (#12006).
24202425
var nestedEditable = Widget.getNestedEditable( editable, el );
24212426
if ( nestedEditable ) {

tests/plugins/widget/dnd.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,29 @@
482482
} );
483483
},
484484

485+
'test drag and drop - block widget into widget in nested editable': function() {
486+
var editor = this.editor,
487+
html = '<div data-widget="testwidget4" id="w4">' +
488+
'<div class="n1">' +
489+
'<div data-widget="testwidget4" id="w4a">' +
490+
'<div class="n1">' +
491+
'<p>x</p>' +
492+
'</div>' +
493+
'</div>' +
494+
'</div>' +
495+
'</div>';
496+
497+
this.editorBot.setData( html, function() {
498+
var repo = editor.widgets,
499+
finder = repo.finder;
500+
501+
repo._.draggedWidget = getWidgetById( editor, 'w4' );
502+
finder.greedySearch();
503+
504+
assertRelations( editor, finder, '|<div data-widget="testwidget4" id="w4"><div class="n1"><div data-widget="testwidget4" id="w4a"><div class="n1"><p>x</p></div></div></div></div>|' );
505+
} );
506+
},
507+
485508
'test drag and drop - block widget into nested editable (ACF)': function() {
486509
var editor = this.editor,
487510
html = '<div data-widget="testwidget2">' +
Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1-
@bender-tags: widget
1+
@bender-tags: widget, 13397
22
@bender-ui: collapsed
33
@bender-ckeditor-plugins: wysiwygarea, toolbar, sourcearea, table, undo, indent, justify, clipboard, floatingspace, basicstyles, image2, codesnippet, link, elementspath, blockquote, format, htmlwriter, list, maximize
44

55
Add some widgets and nested widgets (use 'empty' icon for that).
6-
Test block widgets features:
7-
- create,
8-
- edit,
9-
- select,
10-
- drag and drop,
11-
- cut/copy and paste,
12-
- editing in nested editable,
13-
- remove,
14-
- undo/redo,
15-
- switch multiple times between source and wysiwyg mode.
6+
7+
## Test block widgets:
8+
9+
* create,
10+
* edit,
11+
* select,
12+
* drag and drop,
13+
* cut/copy and paste,
14+
* editing in nested editable,
15+
* remove,
16+
* undo/redo,
17+
* switch multiple times between source and wysiwyg mode.
18+
19+
## Edge cases:
20+
21+
* DnD inside its child:
22+
1. Create a doublecolumn widget containing another doublecolumn widget('empty' icon).
23+
1. Try to drag the outer widget into the inner widget. Should not be possible.

0 commit comments

Comments
 (0)