Skip to content

Commit a3b9129

Browse files
committed
Spinner: Ignore mousewheel events when not focused
Fixes #15139 Closes gh-1794
1 parent 162377f commit a3b9129

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

tests/unit/spinner/core.js

+25-9
Original file line numberDiff line numberDiff line change
@@ -162,23 +162,39 @@ QUnit.test( "mouse click on up button, increases value not greater than max", fu
162162
} );
163163

164164
QUnit.test( "mousewheel on input", function( assert ) {
165-
assert.expect( 4 );
165+
var ready = assert.async();
166+
assert.expect( 5 );
166167

167168
var element = $( "#spin" ).val( 0 ).spinner( {
168169
step: 2
169170
} );
170171

171-
element.trigger( "mousewheel" );
172-
assert.equal( element.val(), 0, "mousewheel event without delta does not change value" );
172+
element.simulate( "focus" );
173+
setTimeout( step1 );
173174

174-
element.trigger( "mousewheel", 1 );
175-
assert.equal( element.val(), 2 );
175+
function step1() {
176+
element.trigger( "mousewheel" );
177+
assert.equal( element.val(), 0, "mousewheel event without delta does not change value" );
176178

177-
element.trigger( "mousewheel", -0.2 );
178-
assert.equal( element.val(), 0 );
179+
element.trigger( "mousewheel", 1 );
180+
assert.equal( element.val(), 2, "delta 1" );
181+
182+
element.trigger( "mousewheel", -0.2 );
183+
assert.equal( element.val(), 0, "delta -0.2" );
184+
185+
element.trigger( "mousewheel", -15 );
186+
assert.equal( element.val(), -2, "delta -15" );
179187

180-
element.trigger( "mousewheel", -15 );
181-
assert.equal( element.val(), -2 );
188+
element.simulate( "blur" );
189+
setTimeout( step2 );
190+
}
191+
192+
function step2() {
193+
element.trigger( "mousewheel", 1 );
194+
assert.equal( element.val(), -2, "mousewheel when not focused" );
195+
196+
ready();
197+
}
182198
} );
183199

184200
QUnit.test( "reading HTML5 attributes", function( assert ) {

ui/widgets/spinner.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,13 @@ $.widget( "ui.spinner", {
140140
}
141141
},
142142
mousewheel: function( event, delta ) {
143-
if ( !delta ) {
143+
var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
144+
var isActive = this.element[ 0 ] === activeElement;
145+
146+
if ( !isActive || !delta ) {
144147
return;
145148
}
149+
146150
if ( !this.spinning && !this._start( event ) ) {
147151
return false;
148152
}

0 commit comments

Comments
 (0)