};
}
+ // Handle right-click
+ on(el, 'contextmenu', function (ev) {
+ var s = document.getSelection(),
+ sText = Terminal.prepareCopiedTextForClipboard(s.toString()),
+ r = s.getRangeAt(0);
+
+ var x = ev.clientX,
+ y = ev.clientY;
+
+ var cr = r.getClientRects(),
+ clickIsOnSelection = false,
+ i, rect;
+
+ for (i=0; i<cr.length; i++) {
+ rect = cr[i];
+ clickIsOnSelection = (
+ (x > rect.left) && (x < rect.right) &&
+ (y > rect.top) && (y < rect.bottom)
+ )
+ // If we clicked on selection and selection is not a single space,
+ // then mark the right click as copy-only. We check for the single
+ // space selection, as this can happen when clicking on an
+ // and there is not much pointing in copying a single space.
+ // Single space is char
+ if (clickIsOnSelection && (sText !== ' ')) {
+ break;
+ }
+ }
+
+ // Bring textarea at the cursor position
+ if (!clickIsOnSelection) {
+ term.textarea.style.position = 'fixed';
+ term.textarea.style.width = '10px';
+ term.textarea.style.height = '10px';
+ term.textarea.style.left = x + 'px';
+ term.textarea.style.top = y + 'px';
+ term.textarea.style.zIndex = 1000;
+ term.textarea.focus();
+
+ // Reset the terminal textarea's styling
+ setTimeout(function () {
+ term.textarea.style.position = null;
+ term.textarea.style.width = null;
+ term.textarea.style.height = null;
+ term.textarea.style.left = null;
+ term.textarea.style.top = null;
+ term.textarea.style.zIndex = null;
+ }, 1);
+ }
+ });
+
on(el, 'mousedown', function(ev) {
if (!self.mouseEvents) return;