From 362ac65f459c02ade4a937a399bfecc5e0d54c17 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Fri, 14 Jul 2017 08:42:47 -0400 Subject: [PATCH] DateTimeInputWidget: Ignore wheel when not focused Much like I6c9f4679, it's probably best that the widget only use wheel input when it's focused so it won't accidentally trigger when scrolling through a form. Bug: T170607 Change-Id: I46dc3eb01733be939c62e7e7f3f044f21ef1e6d8 --- .../DateTimeInputWidget.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js b/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js index e42ab25789..9233eef271 100644 --- a/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js +++ b/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js @@ -183,6 +183,16 @@ /* Methods */ + /** + * Get the currently focused field, if any + * + * @private + * @return {jQuery} + */ + mw.widgets.datetime.DateTimeInputWidget.prototype.getFocusedField = function () { + return this.$fields.find( this.getElementDocument().activeElement ); + }; + /** * Convert a date string to a Date * @@ -717,7 +727,7 @@ var delta = 0, spec = $field.data( 'mw-widgets-datetime-dateTimeInputWidget-fieldSpec' ); - if ( this.isDisabled() ) { + if ( this.isDisabled() || !this.getFocusedField().length ) { return; } @@ -803,7 +813,7 @@ * @inheritdoc */ mw.widgets.datetime.DateTimeInputWidget.prototype.focus = function () { - if ( !this.$fields.find( document.activeElement ).length ) { + if ( !this.getFocusedField().length ) { this.$fields.find( '.mw-widgets-datetime-dateTimeInputWidget-editField' ).first().focus(); } return this; @@ -813,7 +823,7 @@ * @inheritdoc */ mw.widgets.datetime.DateTimeInputWidget.prototype.blur = function () { - this.$fields.find( document.activeElement ).blur(); + this.getFocusedField().blur(); return this; }; -- 2.20.1