123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- goog.provide('goog.events.MouseWheelEvent');
- goog.provide('goog.events.MouseWheelHandler');
- goog.provide('goog.events.MouseWheelHandler.EventType');
- goog.require('goog.dom');
- goog.require('goog.events');
- goog.require('goog.events.BrowserEvent');
- goog.require('goog.events.EventTarget');
- goog.require('goog.math');
- goog.require('goog.style');
- goog.require('goog.userAgent');
- goog.events.MouseWheelHandler = function(element, opt_capture) {
- goog.events.EventTarget.call(this);
-
- this.element_ = element;
- var rtlElement = goog.dom.isElement(this.element_) ?
- (this.element_) :
- (this.element_ ?
- (this.element_).body :
- null);
-
- this.isRtl_ = !!rtlElement && goog.style.isRightToLeft(rtlElement);
- var type = goog.userAgent.GECKO ? 'DOMMouseScroll' : 'mousewheel';
-
- this.listenKey_ = goog.events.listen(this.element_, type, this, opt_capture);
- };
- goog.inherits(goog.events.MouseWheelHandler, goog.events.EventTarget);
- goog.events.MouseWheelHandler.EventType = {
- MOUSEWHEEL: 'mousewheel'
- };
- goog.events.MouseWheelHandler.prototype.maxDeltaX_;
- goog.events.MouseWheelHandler.prototype.maxDeltaY_;
- goog.events.MouseWheelHandler.prototype.setMaxDeltaX = function(maxDeltaX) {
- this.maxDeltaX_ = maxDeltaX;
- };
- goog.events.MouseWheelHandler.prototype.setMaxDeltaY = function(maxDeltaY) {
- this.maxDeltaY_ = maxDeltaY;
- };
- goog.events.MouseWheelHandler.prototype.handleEvent = function(e) {
- var deltaX = 0;
- var deltaY = 0;
- var detail = 0;
- var be = e.getBrowserEvent();
- if (be.type == 'mousewheel') {
-
-
-
-
-
- var wheelDeltaScaleFactor = 40;
- detail = goog.events.MouseWheelHandler.smartScale_(
- -be.wheelDelta, wheelDeltaScaleFactor);
- if (goog.isDef(be.wheelDeltaX)) {
-
-
- deltaX = goog.events.MouseWheelHandler.smartScale_(
- -be.wheelDeltaX, wheelDeltaScaleFactor);
- deltaY = goog.events.MouseWheelHandler.smartScale_(
- -be.wheelDeltaY, wheelDeltaScaleFactor);
- } else {
- deltaY = detail;
- }
-
- } else {
-
- detail = be.detail;
-
-
- if (detail > 100) {
- detail = 3;
- } else if (detail < -100) {
- detail = -3;
- }
-
-
- if (goog.isDef(be.axis) && be.axis === be.HORIZONTAL_AXIS) {
- deltaX = detail;
- } else {
- deltaY = detail;
- }
- }
- if (goog.isNumber(this.maxDeltaX_)) {
- deltaX = goog.math.clamp(deltaX, -this.maxDeltaX_, this.maxDeltaX_);
- }
- if (goog.isNumber(this.maxDeltaY_)) {
- deltaY = goog.math.clamp(deltaY, -this.maxDeltaY_, this.maxDeltaY_);
- }
-
-
-
- if (this.isRtl_) {
- deltaX = -deltaX;
- }
- var newEvent = new goog.events.MouseWheelEvent(detail, be, deltaX, deltaY);
- this.dispatchEvent(newEvent);
- };
- goog.events.MouseWheelHandler.smartScale_ = function(
- mouseWheelDelta, scaleFactor) {
-
-
-
-
-
-
-
-
-
-
-
-
- if (goog.userAgent.WEBKIT && (goog.userAgent.MAC || goog.userAgent.LINUX) &&
- (mouseWheelDelta % scaleFactor) != 0) {
- return mouseWheelDelta;
- } else {
- return mouseWheelDelta / scaleFactor;
- }
- };
- goog.events.MouseWheelHandler.prototype.disposeInternal = function() {
- goog.events.MouseWheelHandler.superClass_.disposeInternal.call(this);
- goog.events.unlistenByKey(this.listenKey_);
- this.listenKey_ = null;
- };
- goog.events.MouseWheelEvent = function(detail, browserEvent, deltaX, deltaY) {
- goog.events.BrowserEvent.call(this, browserEvent);
- this.type = goog.events.MouseWheelHandler.EventType.MOUSEWHEEL;
-
- this.detail = detail;
-
- this.deltaX = deltaX;
-
- this.deltaY = deltaY;
- };
- goog.inherits(goog.events.MouseWheelEvent, goog.events.BrowserEvent);
|