triple click selects the whole line
This commit is contained in:
parent
f0bf1dd88c
commit
9ee77b6205
3 changed files with 80 additions and 4 deletions
21
Editor.js
21
Editor.js
|
|
@ -118,6 +118,7 @@ function Editor(doc, renderer)
|
||||||
|
|
||||||
addListener(container, "mousedown", bind(this.onMouseDown, this));
|
addListener(container, "mousedown", bind(this.onMouseDown, this));
|
||||||
addListener(container, "mousewheel", bind(this.onMouseWheel, this));
|
addListener(container, "mousewheel", bind(this.onMouseWheel, this));
|
||||||
|
addTripleClickListener(container, bind(this.selectCurrentLine, this));
|
||||||
|
|
||||||
this.doc = doc;
|
this.doc = doc;
|
||||||
doc.addChangeListener(function(startRow, endRow) {
|
doc.addChangeListener(function(startRow, endRow) {
|
||||||
|
|
@ -457,14 +458,30 @@ Editor.prototype =
|
||||||
this._moveSelection(this.moveLineEnd);
|
this._moveSelection(this.moveLineEnd);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
selectCurrentLine : function()
|
||||||
|
{
|
||||||
|
this.setSelectionAnchor(this.cursor.row, 0);
|
||||||
|
this._moveSelection(function() {
|
||||||
|
this.moveTo(this.cursor.row+1, 0);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
moveBy : function(rows, chars) {
|
moveBy : function(rows, chars) {
|
||||||
this.moveTo(this.cursor.row+rows, this.cursor.column+chars);
|
this.moveTo(this.cursor.row+rows, this.cursor.column+chars);
|
||||||
},
|
},
|
||||||
|
|
||||||
moveTo : function(row, column)
|
moveTo : function(row, column)
|
||||||
{
|
{
|
||||||
this.cursor.row = Math.min(this.doc.getLength()-1, Math.max(0, row));
|
if (row >= this.doc.getLength()) {
|
||||||
this.cursor.column = Math.min(this.doc.getLine(this.cursor.row).length, Math.max(0, column));
|
this.cursor.row = this.doc.getLength()-1;
|
||||||
|
this.cursor.column = this.doc.getLine(this.cursor.row).length;
|
||||||
|
} else if (row < 0) {
|
||||||
|
this.cursor.row = 0;
|
||||||
|
this.cursor.column = 0;
|
||||||
|
} else {
|
||||||
|
this.cursor.row = row;
|
||||||
|
this.cursor.column = Math.min(this.doc.getLine(this.cursor.row).length, Math.max(0, column));
|
||||||
|
}
|
||||||
this.updateCursor();
|
this.updateCursor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
28
experiments/triple_click.html
Normal file
28
experiments/triple_click.html
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||||
|
"http://www.w3.org/TR/html4/strict.dtd">
|
||||||
|
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>triple_click</title>
|
||||||
|
<meta name="author" content="Fabian Jakobs">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="juhu">
|
||||||
|
Juhu Kinners
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="../lib.js" type="text/javascript" charset="utf-8"></script>
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
|
||||||
|
var el = document.getElementById("juhu");
|
||||||
|
addTripleClickListener(el, function() {
|
||||||
|
console.log("triple");
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
35
lib.js
35
lib.js
|
|
@ -3,9 +3,20 @@ function addListener(elem, type, callback) {
|
||||||
return elem.addEventListener(type, callback, false);
|
return elem.addEventListener(type, callback, false);
|
||||||
}
|
}
|
||||||
if (elem.attachEvent) {
|
if (elem.attachEvent) {
|
||||||
elem.attachEvent("on" + type, function() {
|
var wrapper = function() {
|
||||||
callback(window.event);
|
callback(window.event);
|
||||||
});
|
}
|
||||||
|
callback.$$wrapper = wrapper;
|
||||||
|
elem.attachEvent("on" + type, wrapper);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeListener(elem, type, callback) {
|
||||||
|
if (elem.removeEventListener) {
|
||||||
|
return elem.removeEventListener(type, callback, false);
|
||||||
|
}
|
||||||
|
if (elem.detachEvent) {
|
||||||
|
elem.detachEvent("on" + type, callback.$$wrapper || callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,4 +128,24 @@ capture = function(el, eventHandler, releaseCaptureHandler)
|
||||||
|
|
||||||
document.addEventListener("mousemove", onMouseMove, true);
|
document.addEventListener("mousemove", onMouseMove, true);
|
||||||
document.addEventListener("mouseup", onMouseUp, true);
|
document.addEventListener("mouseup", onMouseUp, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addTripleClickListener(el, callback)
|
||||||
|
{
|
||||||
|
addListener(el, "dblclick", function()
|
||||||
|
{
|
||||||
|
var listener = function(e)
|
||||||
|
{
|
||||||
|
clearTimeout(timeoutId);
|
||||||
|
remove();
|
||||||
|
callback(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
var remove = function() {
|
||||||
|
removeListener(el, "click", listener);
|
||||||
|
};
|
||||||
|
|
||||||
|
addListener(el, "click", listener);
|
||||||
|
var timeoutId = setTimeout(remove, 300);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue