Skip to content

Commit

Permalink
Don't unnecessarily re-render the attachment details view when editin…
Browse files Browse the repository at this point in the history
…g 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).

Merges [23283] to the 3.5 branch.

props koopersmith.
fixes #23054.



git-svn-id: https://develop.svn.wordpress.org/branches/3.5@23284 602fd350-edb4-49c9-b593-d223f7449a82
  • Loading branch information
nacin committed Jan 4, 2013
1 parent e9545e3 commit 7766259
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion wp-includes/js/media-views.js
Expand Up @@ -2842,7 +2842,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.
Expand Down Expand Up @@ -3160,6 +3162,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
*/
Expand Down

0 comments on commit 7766259

Please sign in to comment.