Skip to content

Commit fcb425e

Browse files
committed
Don't clobber mouse offset properties if we don't adjust them
Fixes jquery#165
1 parent 4a707c2 commit fcb425e

File tree

3 files changed

+30
-8
lines changed

3 files changed

+30
-8
lines changed

jquery.mousewheel.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,7 @@
9999
delta = 0,
100100
deltaX = 0,
101101
deltaY = 0,
102-
absDelta = 0,
103-
offsetX = 0,
104-
offsetY = 0;
102+
absDelta = 0;
105103
event = $.event.fix( orgEvent );
106104
event.type = "mousewheel";
107105

@@ -191,16 +189,14 @@
191189
// Normalise offsetX and offsetY properties
192190
if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
193191
var boundingRect = this.getBoundingClientRect();
194-
offsetX = event.clientX - boundingRect.left;
195-
offsetY = event.clientY - boundingRect.top;
192+
event.offsetX = event.clientX - boundingRect.left;
193+
event.offsetY = event.clientY - boundingRect.top;
196194
}
197195

198196
// Add information to the event object
199197
event.deltaX = deltaX;
200198
event.deltaY = deltaY;
201199
event.deltaFactor = lowestDelta;
202-
event.offsetX = offsetX;
203-
event.offsetY = offsetY;
204200

205201
// Go ahead and set deltaMode to 0 since we converted to pixels
206202
// Although this is a little odd since we overwrite the deltaX/Y

jquery.mousewheel.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/unit.js

+26
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,29 @@ QUnit.test( "natively triggered events", function( assert ) {
5959

6060
markup.remove();
6161
} );
62+
63+
QUnit.test( "mouse event properties are passed through", function( assert ) {
64+
assert.expect( 4 );
65+
66+
var markup = jQuery( "<p>wheelme</p>" ).appendTo( "body" );
67+
68+
markup.on( "mousewheel", function( e ) {
69+
var org = e.originalEvent;
70+
assert.equal( org.clientX, 342, "original event has clientX: " + org.clientX );
71+
assert.equal( org.clientY, 301, "original event has clientY: " + org.clientY );
72+
assert.ok( e.offsetX < org.clientX, "got plausible offsetX in the event: " + e.offsetX );
73+
assert.ok( e.offsetY < org.clientY, "got plausible offsetY in the event: " + e.offsetY );
74+
} );
75+
76+
// Not sure why this property is manipulating offsetX/Y but the behavior cannot
77+
// change in a minor version so it will stay since it's set to true right now.
78+
// For testing we just want to ensure that the properties get through.
79+
var event1 = makeWheelEvent( 0, 2.2 );
80+
event1.offsetX = 1;
81+
event1.offsetY = 2;
82+
event1.clientX = 342;
83+
event1.clientY = 301;
84+
markup[ 0 ].dispatchEvent( event1 );
85+
86+
markup.remove();
87+
} );

0 commit comments

Comments
 (0)