diff --git a/notebook/static/notebook/js/clipboard.js b/notebook/static/notebook/js/clipboard.js index b5248dd23..a15bae0f8 100644 --- a/notebook/static/notebook/js/clipboard.js +++ b/notebook/static/notebook/js/clipboard.js @@ -34,10 +34,18 @@ function load_json(clipboard) { return JSON.parse(s.slice(pix + jcbprefix.length, six)); } +function isProgrammaticCopy(event) { + return (typeof(event.target.selectionStart) !== 'undefined' + && typeof(event.target.selectionEnd) !== 'undefined' + && ((event.target.selectionEnd - event.target.selectionStart) > 0)); +} + function copy(event) { if ((Jupyter.notebook.mode !== 'command') || // window.getSelection checks if text is selected, e.g. in output - !window.getSelection().isCollapsed) { + !window.getSelection().isCollapsed || + // Allow programmatic copy + isProgrammaticCopy(event)) { return; } var selecn = Jupyter.notebook.get_selected_cells().map(