(cm, event, start, behavior)
| 10175 | |
| 10176 | // Normal selection, as opposed to text dragging. |
| 10177 | function leftButtonSelect(cm, event, start, behavior) { |
| 10178 | var display = cm.display, |
| 10179 | doc = cm.doc |
| 10180 | e_preventDefault(event) |
| 10181 | |
| 10182 | var ourRange, |
| 10183 | ourIndex, |
| 10184 | startSel = doc.sel, |
| 10185 | ranges = startSel.ranges |
| 10186 | if (behavior.addNew && !behavior.extend) { |
| 10187 | ourIndex = doc.sel.contains(start) |
| 10188 | if (ourIndex > -1) { |
| 10189 | ourRange = ranges[ourIndex] |
| 10190 | } else { |
| 10191 | ourRange = new Range(start, start) |
| 10192 | } |
| 10193 | } else { |
| 10194 | ourRange = doc.sel.primary() |
| 10195 | ourIndex = doc.sel.primIndex |
| 10196 | } |
| 10197 | |
| 10198 | if (behavior.unit == "rectangle") { |
| 10199 | if (!behavior.addNew) { |
| 10200 | ourRange = new Range(start, start) |
| 10201 | } |
| 10202 | start = posFromMouse(cm, event, true, true) |
| 10203 | ourIndex = -1 |
| 10204 | } else { |
| 10205 | var range$$1 = rangeForUnit(cm, start, behavior.unit) |
| 10206 | if (behavior.extend) { |
| 10207 | ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend) |
| 10208 | } else { |
| 10209 | ourRange = range$$1 |
| 10210 | } |
| 10211 | } |
| 10212 | |
| 10213 | if (!behavior.addNew) { |
| 10214 | ourIndex = 0 |
| 10215 | setSelection(doc, new Selection([ourRange], 0), sel_mouse) |
| 10216 | startSel = doc.sel |
| 10217 | } else if (ourIndex == -1) { |
| 10218 | ourIndex = ranges.length |
| 10219 | setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), { scroll: false, origin: "*mouse" }) |
| 10220 | } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { |
| 10221 | setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), { scroll: false, origin: "*mouse" }) |
| 10222 | startSel = doc.sel |
| 10223 | } else { |
| 10224 | replaceOneSelection(doc, ourIndex, ourRange, sel_mouse) |
| 10225 | } |
| 10226 | |
| 10227 | var lastPos = start |
| 10228 | function extendTo(pos) { |
| 10229 | if (cmp(lastPos, pos) == 0) { |
| 10230 | return |
| 10231 | } |
| 10232 | lastPos = pos |
| 10233 | |
| 10234 | if (behavior.unit == "rectangle") { |
no test coverage detected