2d mouse wheel support

This commit is contained in:
Fabian Jakobs 2010-09-20 11:48:13 +02:00
commit 05a9bfd332
3 changed files with 25 additions and 5 deletions

View file

@ -323,8 +323,7 @@ var Editor = function(renderer, doc) {
}; };
this.onMouseWheel = function(e) { this.onMouseWheel = function(e) {
var delta = e.wheel; this.renderer.scrollBy(e.wheelX, e.wheelY);
this.renderer.scrollToY(this.renderer.getScrollTop() - (delta * 15));
return ace.preventDefault(e); return ace.preventDefault(e);
}; };

View file

@ -314,6 +314,11 @@ var VirtualRenderer = function(container) {
} }
}; };
this.scrollBy = function(deltaX, deltaY) {
deltaY && this.scrollToY(this.scrollTop + deltaY);
deltaX && (this.scroller.scrollLeft += deltaX);
};
this.screenToTextCoordinates = function(pageX, pageY) { this.screenToTextCoordinates = function(pageX, pageY) {
var canvasPos = this.scroller.getBoundingClientRect(); var canvasPos = this.scroller.getBoundingClientRect();

View file

@ -110,8 +110,24 @@ require.def("ace/lib/event", ["ace/lib/core"], function(core) {
event.addMouseWheelListener = function(el, callback) { event.addMouseWheelListener = function(el, callback) {
var listener = function(e) { var listener = function(e) {
e.wheel = (e.wheelDelta) ? e.wheelDelta / 120 if (e.wheelDelta !== undefined) {
: -(e.detail || 0) / 3; if (e.wheelDeltaX !== undefined) {
e.wheelX = e.wheelDeltaX / 8;
e.wheelY = e.wheelDeltaY / 8;
} else {
e.wheelX = 0;
e.wheelY = e.wheelDelta / 8;
}
}
else {
if (e.axis && e.axis == e.HORIZONTAL_AXIS) {
e.wheelX = (e.detail || 0) * 5;
e.wheelY = 0;
} else {
e.wheelX = 0;
e.wheelY = (e.detail || 0) * 5;
}
}
callback(e); callback(e);
}; };
event.addListener(el, "DOMMouseScroll", listener); event.addListener(el, "DOMMouseScroll", listener);
@ -158,6 +174,6 @@ require.def("ace/lib/event", ["ace/lib/core"], function(core) {
}); });
} }
}; };
return event; return event;
}); });