Don't unnecessarily re-render the attachment details view when editing the title and caption. Re-rendering causes issues with tabbing and focus, and is only necessary for other views (such as "Caption this image..." when editing a gallery).
props koopersmith. fixes #23054. for trunk. git-svn-id: https://develop.svn.wordpress.org/trunk@23283 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
3ef497695d
commit
2d12f38ad1
@ -2846,7 +2846,9 @@
|
||||
initialize: function() {
|
||||
var selection = this.options.selection;
|
||||
|
||||
this.model.on( 'change:sizes change:uploading change:caption change:title', this.render, this );
|
||||
this.model.on( 'change:sizes change:uploading', this.render, this );
|
||||
this.model.on( 'change:title', this._syncTitle, this );
|
||||
this.model.on( 'change:caption', this._syncCaption, this );
|
||||
this.model.on( 'change:percent', this.progress, this );
|
||||
|
||||
// Update the selection.
|
||||
@ -3164,6 +3166,28 @@
|
||||
}
|
||||
});
|
||||
|
||||
// Ensure settings remain in sync between attachment views.
|
||||
_.each({
|
||||
caption: '_syncCaption',
|
||||
title: '_syncTitle'
|
||||
}, function( method, setting ) {
|
||||
media.view.Attachment.prototype[ method ] = function( model, value ) {
|
||||
var $setting = this.$('[data-setting="' + setting + '"]');
|
||||
|
||||
if ( ! $setting.length )
|
||||
return this;
|
||||
|
||||
// If the updated value is in sync with the value in the DOM, there
|
||||
// is no need to re-render. If we're currently editing the value,
|
||||
// it will automatically be in sync, suppressing the re-render for
|
||||
// the view we're editing, while updating any others.
|
||||
if ( value === $setting.find('input, textarea, select, [value]').val() )
|
||||
return this;
|
||||
|
||||
return this.render();
|
||||
};
|
||||
});
|
||||
|
||||
/**
|
||||
* wp.media.view.Attachment.Library
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user