right clicking no longer clears the selection

This commit is contained in:
Fabian Jakobs 2010-10-05 18:33:27 +02:00
commit b263854515
2 changed files with 34 additions and 16 deletions

View file

@ -8,6 +8,7 @@
require.def("ace/Editor", require.def("ace/Editor",
[ [
"ace/ace", "ace/ace",
"ace/lib/event",
"ace/TextInput", "ace/TextInput",
"ace/KeyBinding", "ace/KeyBinding",
"ace/Document", "ace/Document",
@ -15,7 +16,7 @@ require.def("ace/Editor",
"ace/BackgroundTokenizer", "ace/BackgroundTokenizer",
"ace/Range", "ace/Range",
"ace/MEventEmitter" "ace/MEventEmitter"
], function(ace, TextInput, KeyBinding, Document, Search, BackgroundTokenizer, Range, MEventEmitter) { ], function(ace, event, TextInput, KeyBinding, Document, Search, BackgroundTokenizer, Range, MEventEmitter) {
var Editor = function(renderer, doc) { var Editor = function(renderer, doc) {
var container = renderer.getContainerElement(); var container = renderer.getContainerElement();
@ -265,8 +266,11 @@ var Editor = function(renderer, doc) {
this.onMouseDown = function(e) { this.onMouseDown = function(e) {
var pageX = ace.getDocumentX(e); var pageX = event.getDocumentX(e);
var pageY = ace.getDocumentY(e); var pageY = event.getDocumentY(e);
if (event.getButton(e) != 0)
return;
var pos = this.renderer.screenToTextCoordinates(pageX, pageY); var pos = this.renderer.screenToTextCoordinates(pageX, pageY);
pos.row = Math.max(0, Math.min(pos.row, this.doc.getLength()-1)); pos.row = Math.max(0, Math.min(pos.row, this.doc.getLength()-1));
@ -281,8 +285,8 @@ var Editor = function(renderer, doc) {
var mousePageX, mousePageY; var mousePageX, mousePageY;
var onMouseSelection = function(e) { var onMouseSelection = function(e) {
mousePageX = ace.getDocumentX(e); mousePageX = event.getDocumentX(e);
mousePageY = ace.getDocumentY(e); mousePageY = event.getDocumentY(e);
}; };
var onMouseSelectionEnd = function() { var onMouseSelectionEnd = function() {
@ -317,10 +321,10 @@ var Editor = function(renderer, doc) {
self.renderer.scrollCursorIntoView(); self.renderer.scrollCursorIntoView();
}; };
ace.capture(this.container, onMouseSelection, onMouseSelectionEnd); event.capture(this.container, onMouseSelection, onMouseSelectionEnd);
var timerId = setInterval(onSelectionInterval, 20); var timerId = setInterval(onSelectionInterval, 20);
return ace.preventDefault(e); return event.preventDefault(e);
}; };
this.onMouseDoubleClick = function(e) { this.onMouseDoubleClick = function(e) {
@ -337,7 +341,7 @@ var Editor = function(renderer, doc) {
this.onMouseWheel = function(e) { this.onMouseWheel = function(e) {
this.renderer.scrollBy(e.wheelX, e.wheelY); this.renderer.scrollBy(e.wheelX, e.wheelY);
return ace.preventDefault(e); return event.preventDefault(e);
}; };
this.getCopyText = function() { this.getCopyText = function() {

View file

@ -54,21 +54,35 @@ require.def("ace/lib/event", ["ace/lib/core"], function(core) {
e.returnValue = false; e.returnValue = false;
}; };
event.getDocumentX = function(event) { event.getDocumentX = function(e) {
if (event.clientX) { if (e.clientX) {
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
return event.clientX + scrollLeft; return e.clientX + scrollLeft;
} else { } else {
return event.pageX; return e.pageX;
} }
}; };
event.getDocumentY = function(event) { event.getDocumentY = function(e) {
if (event.clientY) { if (e.clientY) {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
return event.clientY + scrollTop; return e.clientY + scrollTop;
} else { } else {
return event.pageX; return e.pageX;
}
};
/**
* @return {Number} 0 for left button, 1 for middle button, 2 for right button
*/
event.getButton = function(e) {
// DOM Event
if (e.preventDefault) {
return e.button;
}
// old IE
else {
return Math.max(e.button - 1, 2)
} }
}; };