jenkins-bot has submitted this change and it was merged. Change subject: Don't use a inputFilter on LinkTargetInputWidget ......................................................................
Don't use a inputFilter on LinkTargetInputWidget Fixes I4df99d2c1. Input filters run on every change making it impossible to type space at the end of a word, even if you intend to type something else after it. Apply the trim only to the annotation, and make sure we don't reset the input value from the annotation if setValue is triggered by a change event. Bug: T94498 Change-Id: Ie01e0f4970757f2983eb3488be805f755f688291 --- M src/ui/widgets/ve.ui.LinkTargetInputWidget.js 1 file changed, 16 insertions(+), 13 deletions(-) Approvals: Catrope: Looks good to me, approved jenkins-bot: Verified diff --git a/src/ui/widgets/ve.ui.LinkTargetInputWidget.js b/src/ui/widgets/ve.ui.LinkTargetInputWidget.js index e26a5e5..9d270c9 100644 --- a/src/ui/widgets/ve.ui.LinkTargetInputWidget.js +++ b/src/ui/widgets/ve.ui.LinkTargetInputWidget.js @@ -16,10 +16,7 @@ ve.ui.LinkTargetInputWidget = function VeUiLinkTargetInputWidget( config ) { // Parent constructor OO.ui.TextInputWidget.call( this, $.extend( { - validate: /^(https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?/gi, - inputFilter: function ( target ) { - return target.trim(); - } + validate: /^(https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?/gi }, config ) ); // Properties @@ -64,7 +61,7 @@ // If URL is external, flip to LTR. Otherwise, set back to RTL widget.setRTL( !isExt ); } - widget.setValue( widget.$input.val() ); + widget.setValue( widget.$input.val(), true ); } ); } }; @@ -76,8 +73,9 @@ * * @method * @param {string} value New value + * @param {boolean} [fromInput] Value was generated from input element */ -ve.ui.LinkTargetInputWidget.prototype.setValue = function ( value ) { +ve.ui.LinkTargetInputWidget.prototype.setValue = function ( value, fromInput ) { // Keep annotation in sync with value value = this.cleanUpValue( value ); if ( value === '' ) { @@ -86,9 +84,9 @@ this.setAnnotation( new ve.dm.LinkAnnotation( { type: 'link', attributes: { - href: value + href: value.trim() } - } ) ); + } ), fromInput ); } // Parent method @@ -102,15 +100,20 @@ * * @method * @param {ve.dm.LinkAnnotation} annotation Link annotation + * @param {boolean} [fromInput] Annotation was generated from input element value * @chainable */ -ve.ui.LinkTargetInputWidget.prototype.setAnnotation = function ( annotation ) { +ve.ui.LinkTargetInputWidget.prototype.setAnnotation = function ( annotation, fromInput ) { this.annotation = annotation; - // Parent method - OO.ui.TextInputWidget.prototype.setValue.call( - this, this.getTargetFromAnnotation( annotation ) - ); + // If this method was triggered by the user typing into the input, don't update + // the input element to avoid the cursor jumping as the user types + if ( !fromInput ) { + // Parent method + OO.ui.TextInputWidget.prototype.setValue.call( + this, this.getTargetFromAnnotation( annotation ) + ); + } return this; }; -- To view, visit https://gerrit.wikimedia.org/r/201895 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie01e0f4970757f2983eb3488be805f755f688291 Gerrit-PatchSet: 4 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: Esanders <esand...@wikimedia.org> Gerrit-Reviewer: Alex Monk <kren...@gmail.com> Gerrit-Reviewer: Catrope <roan.katt...@gmail.com> Gerrit-Reviewer: Esanders <esand...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits