MCPcopy Index your code
hub / github.com/DHTMLX/gantt / leftButtonSelect

Function leftButtonSelect

samples/common/codehighlight/codemirror.js:7433–7567  ·  view source on GitHub ↗
(cm, event, start, behavior)

Source from the content-addressed store, hash-verified

7431
7432 // Normal selection, as opposed to text dragging.
7433 function leftButtonSelect(cm, event, start, behavior) {
7434 if (ie) { delayBlurEvent(cm); }
7435 var display = cm.display, doc = cm.doc;
7436 e_preventDefault(event);
7437
7438 var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;
7439 if (behavior.addNew && !behavior.extend) {
7440 ourIndex = doc.sel.contains(start);
7441 if (ourIndex > -1)
7442 { ourRange = ranges[ourIndex]; }
7443 else
7444 { ourRange = new Range(start, start); }
7445 } else {
7446 ourRange = doc.sel.primary();
7447 ourIndex = doc.sel.primIndex;
7448 }
7449
7450 if (behavior.unit == "rectangle") {
7451 if (!behavior.addNew) { ourRange = new Range(start, start); }
7452 start = posFromMouse(cm, event, true, true);
7453 ourIndex = -1;
7454 } else {
7455 var range = rangeForUnit(cm, start, behavior.unit);
7456 if (behavior.extend)
7457 { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }
7458 else
7459 { ourRange = range; }
7460 }
7461
7462 if (!behavior.addNew) {
7463 ourIndex = 0;
7464 setSelection(doc, new Selection([ourRange], 0), sel_mouse);
7465 startSel = doc.sel;
7466 } else if (ourIndex == -1) {
7467 ourIndex = ranges.length;
7468 setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),
7469 {scroll: false, origin: "*mouse"});
7470 } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) {
7471 setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
7472 {scroll: false, origin: "*mouse"});
7473 startSel = doc.sel;
7474 } else {
7475 replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);
7476 }
7477
7478 var lastPos = start;
7479 function extendTo(pos) {
7480 if (cmp(lastPos, pos) == 0) { return }
7481 lastPos = pos;
7482
7483 if (behavior.unit == "rectangle") {
7484 var ranges = [], tabSize = cm.options.tabSize;
7485 var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);
7486 var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);
7487 var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);
7488 for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));
7489 line <= end; line++) {
7490 var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);

Callers 1

leftButtonDownFunction · 0.85

Calls 13

delayBlurEventFunction · 0.85
e_preventDefaultFunction · 0.85
posFromMouseFunction · 0.85
rangeForUnitFunction · 0.85
extendRangeFunction · 0.85
setSelectionFunction · 0.85
normalizeSelectionFunction · 0.85
replaceOneSelectionFunction · 0.85
operationFunction · 0.85
e_buttonFunction · 0.85
doneFunction · 0.85
extendFunction · 0.70

Tested by

no test coverage detected