8
0
Просмотр исходного кода

Fixing caption visibility on selection change.

Szymon Kupś 8 лет назад
Родитель
Сommit
06569f5af4
1 измененных файлов с 8 добавлено и 3 удалено
  1. 8 3
      packages/ckeditor5-image/src/imagecaption/imagecaptionengine.js

+ 8 - 3
packages/ckeditor5-image/src/imagecaption/imagecaptionengine.js

@@ -80,7 +80,7 @@ export default class ImageCaptionEngine extends Plugin {
 		editing.downcastDispatcher.on( 'remove', this._fixCaptionVisibility( data => data.position.parent ), { priority: 'high' } );
 
 		// Update view before each rendering.
-		this.listenTo( view, 'render', () => this._updateCaptionVisibility( view ) );
+		this.listenTo( view.document.selection, 'change', () => this._updateCaptionVisibility( view ) );
 	}
 
 	/**
@@ -95,7 +95,9 @@ export default class ImageCaptionEngine extends Plugin {
 
 		// Hide last selected caption if have no child elements.
 		if ( this._lastSelectedCaption && !this._lastSelectedCaption.childCount ) {
-			view.change( writer => writer.addClass( 'ck-hidden', this._lastSelectedCaption ) );
+			if ( !this._lastSelectedCaption.hasClass( 'ck-hidden' ) ) {
+				view.change( writer => writer.addClass( 'ck-hidden', this._lastSelectedCaption ) );
+			}
 		}
 
 		// If whole image is selected.
@@ -116,8 +118,11 @@ export default class ImageCaptionEngine extends Plugin {
 		}
 
 		if ( viewCaption ) {
-			view.change( writer => writer.removeClass( 'ck-hidden', viewCaption ) );
 			this._lastSelectedCaption = viewCaption;
+
+			if ( viewCaption.hasClass( 'ck-hidden' ) ) {
+				view.change( writer => writer.removeClass( 'ck-hidden', viewCaption ) );
+			}
 		}
 	}